Questions tagged «moq»

Moq是用于.NET的强类型和简约模拟框架。

5
如何验证Moq中未调用该方法?
如何验证未调用该方法 Moq中未? 是否有类似AssertWasNotCalled的内容? 更新:从版本3.0开始,可以使用新的语法: mock.Verify(foo => foo.Execute("ping"), Times.Never());
466 c#  .net  moq 

3
返回传递给方法的值
我在接口上有一个方法: string DoSomething(string whatever); 我想用最小起订量来模拟它,以便它返回传入的内容-类似于: _mock.Setup( theObject => theObject.DoSomething( It.IsAny<string>( ) ) ) .Returns( [the parameter that was passed] ) ; 有任何想法吗?
390 c#  mocking  moq 

4
如何告诉Moq返回任务?
我有一个接口声明 Task DoSomethingAsync(); 我正在使用MoqFramework进行测试: [TestMethod()] public async Task MyAsyncTest() { Mock<ISomeInterface> mock = new Mock<ISomeInterface>(); mock.Setup(arg => arg.DoSomethingAsync()).Callback(() => { <my code here> }); ... } 然后在测试中,我执行调用的代码await DoSomethingAsync()。测试只是失败了。我究竟做错了什么?

11
在Moq中分配输出/参考参数
是否可以使用Moq(3.0+)分配out/ ref参数? 我看过使用Callback(),但Action<>不支持ref参数,因为它基于泛型。尽管我可以在回调函数中执行此操作,但我最好还是It.Is在ref参数的输入上添加一个约束()。 我知道Rhino Mocks支持此功能,但是我正在从事的项目已经在使用Moq。
293 c#  parameters  moq  ref  out 

7
Moq第一次和第二次返回值不同
我有一个像这样的测试: [TestCase("~/page/myaction")] public void Page_With_Custom_Action(string path) { // Arrange var pathData = new Mock<IPathData>(); var pageModel = new Mock<IPageModel>(); var repository = new Mock<IPageRepository>(); var mapper = new Mock<IControllerMapper>(); var container = new Mock<IContainer>(); container.Setup(x => x.GetInstance<IPageRepository>()).Returns(repository.Object); repository.Setup(x => x.GetPageByUrl<IPageModel>(path)).Returns(() => pageModel.Object); pathData.Setup(x => x.Action).Returns("myaction"); pathData.Setup(x => x.Controller).Returns("page"); var resolver …
262 c#  unit-testing  nunit  moq 

3
使用Moq模拟单元测试的异步方法
我正在测试用于进行Web API调用的服务的方法。HttpClient如果我还本地运行Web服务(位于解决方案中的另一个项目中),则对单元测试使用正常工作就可以了。 但是,当我签入更改时,构建服务器将无法访问Web服务,因此测试将失败。 我为单元测试设计了一种解决方法,方法是创建一个IHttpClient接口并实现一个在应用程序中使用的版本。对于单元测试,我制作了一个模拟版本,其中包含一个模拟的异步post方法。这是我遇到问题的地方。我想HttpStatusResult为此特定测试返回确定。对于另一个类似的测试,我将返回不好的结果。 测试将运行,但永远不会完成。它挂在等待。我是异步编程,委托和Moq本身的新手,我一直在搜索SO和Google一段时间以学习新事物,但我似乎仍然无法克服这个问题。 这是我要测试的方法: public async Task<bool> QueueNotificationAsync(IHttpClient client, Email email) { // do stuff try { // The test hangs here, never returning HttpResponseMessage response = await client.PostAsync(uri, content); // more logic here } // more stuff } 这是我的单元测试方法: [TestMethod] public async Task QueueNotificationAsync_Completes_With_ValidEmail() { Email email …

3
为什么收到消息“在非虚拟(在VB中可重写)成员上的无效设置...”消息,导致异常?
我有一个单元测试,必须模拟返回布尔类型的非虚拟方法 public class XmlCupboardAccess { public bool IsDataEntityInXmlCupboard(string dataId, out string nameInCupboard, out string refTypeInCupboard, string nameTemplate = null) { return IsDataEntityInXmlCupboard(_theDb, dataId, out nameInCupboard, out refTypeInCupboard, nameTemplate); } } 所以我有一个XmlCupboardAccess类的模拟对象,我正在尝试在测试用例中为此方法设置模拟,如下所示 [TestMethod] Public void Test() { private string temp1; private string temp2; private Mock<XmlCupboardAccess> _xmlCupboardAccess = new Mock<XmlCupboardAccess>(); _xmlCupboardAccess.Setup(x => …
176 c#  unit-testing  moq 

7
Moq模拟扩展方法
我已有一个接口... public interface ISomeInterface { void SomeMethod(); } 我已经使用mixin扩展了这个界面 public static class SomeInterfaceExtensions { public static void AnotherMethod(this ISomeInterface someInterface) { // Implementation here } } 我有一个类,这就是我想测试的。 public class Caller { private readonly ISomeInterface someInterface; public Caller(ISomeInterface someInterface) { this.someInterface = someInterface; } public void Main() { someInterface.AnotherMethod(); } } …

9
如何在ASP.Net MVC中模拟控制器上的请求?
我在使用ASP.Net MVC框架的C#中有一个控制器 public class HomeController:Controller{ public ActionResult Index() { if (Request.IsAjaxRequest()) { //do some ajaxy stuff } return View("Index"); } } 我有一些关于模拟的技巧,并希望通过以下代码和RhinoMocks来测试代码 var mocks = new MockRepository(); var mockedhttpContext = mocks.DynamicMock<HttpContextBase>(); var mockedHttpRequest = mocks.DynamicMock<HttpRequestBase>(); SetupResult.For(mockedhttpContext.Request).Return(mockedHttpRequest); var controller = new HomeController(); controller.ControllerContext = new ControllerContext(mockedhttpContext, new RouteData(), controller); var result …

8
Moq:如何获取传递给模拟服务方法的参数
想象一下这堂课 public class Foo { private Handler _h; public Foo(Handler h) { _h = h; } public void Bar(int i) { _h.AsyncHandle(CalcOn(i)); } private SomeResponse CalcOn(int i) { ...; } } Mo(q)cking Handler在Foo的测试中,我如何能够检查Bar()传递给了_h.AsyncHandle什么?
169 c#  moq 

5
使用Moq验证特定参数
public void SubmitMessagesToQueue_OneMessage_SubmitSuccessfully() { var messageServiceClientMock = new Mock<IMessageServiceClient>(); var queueableMessage = CreateSingleQueueableMessage(); var message = queueableMessage[0]; var xml = QueueableMessageAsXml(queueableMessage); messageServiceClientMock.Setup(proxy => proxy.SubmitMessage(xml)).Verifiable(); //messageServiceClientMock.Setup(proxy => proxy.SubmitMessage(It.IsAny<XmlElement>())).Verifiable(); var serviceProxyFactoryStub = new Mock<IMessageServiceClientFactory>(); serviceProxyFactoryStub.Setup(proxyFactory => proxyFactory.CreateProxy()).Returns(essageServiceClientMock.Object); var loggerStub = new Mock<ILogger>(); var client = new MessageClient(serviceProxyFactoryStub.Object, loggerStub.Object); client.SubmitMessagesToQueue(new List<IMessageRequestDTO> {message}); //messageServiceClientMock.Verify(proxy …
168 c#  unit-testing  nunit  moq 

3
使用Moq确定是否调用方法
据我了解,如果我调用更高级别的方法,则可以测试是否将发生方法调用,即: public abstract class SomeClass() { public void SomeMehod() { SomeOtherMethod(); } internal abstract void SomeOtherMethod(); } 我想测试一下,如果我打电话,SomeMethod()我希望SomeOtherMethod()会被调用。 我认为这种测试可以在模拟框架中使用对吗?
159 c#  .net  unit-testing  mocking  moq 

1
使用Moq验证方法调用
我对使用C#进行单元测试和学习使用Moq相当陌生。下面是我要测试的课程。 class MyClass { SomeClass someClass; public MyClass(SomeClass someClass) { this.someClass = someClass; } public void MyMethod(string method) { method = "test" someClass.DoSomething(method); } } class Someclass { public DoSomething(string method) { // do something... } } 以下是我的TestClass: class MyClassTest { [TestMethod()] public void MyMethodTest() { string action="test"; Mock<SomeClass> mockSomeClass …
142 c#  testing  methods  moq 

3
没有指定输入参数的Moq模拟方法
我在使用Moq的测试中有一些代码: public class Invoice { ... public bool IsInFinancialYear(FinancialYearLookup financialYearLookup) { return InvoiceDate >= financialYearLookup.StartDate && InvoiceDate <= financialYearLookup.EndDate; } ... } 所以在单元测试中,我试图模拟该方法并使它返回true mockInvoice.Setup(x => x.IsInFinancialYear()).Returns(true); 无论如何要写这行,所以我不必指定输入IsInFinancialYear。即。因此,无论代码中输入了什么参数,它都不会返回true,无论传递给它的是什么?
133 c#  mocking  moq 

13
如何在ASP.NET Core中使用ILogger进行单元测试
这是我的控制器: public class BlogController : Controller { private IDAO<Blog> _blogDAO; private readonly ILogger<BlogController> _logger; public BlogController(ILogger<BlogController> logger, IDAO<Blog> blogDAO) { this._blogDAO = blogDAO; this._logger = logger; } public IActionResult Index() { var blogs = this._blogDAO.GetMany(); this._logger.LogInformation("Index page say hello", new object[0]); return View(blogs); } } 如您所见,我有2个依赖项,a IDAO和aILogger 这是我的测试类,我使用xUnit进行测试,使用Moq创建模拟和存根,我可以DAO轻松进行模拟,但是由于ILogger我不知道要做什么,所以我只传递了null并注释掉了登录控制器的调用运行测试时。有什么方法可以测试,但仍然以某种方式保持记录器? public class …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.