我一直在使用RhinoMocks,但刚开始研究Moq。 我有这个非常基本的问题,而且让我感到惊讶的是,这个问题并没有立即开始。 假设我有以下的类定义: public class Foo { private IBar _bar; public Foo(IBar bar) { _bar = bar; } .. } 现在我有一个testing,我需要模拟发送给Foo的IBar。 在RhinoMocks中,我只是简单地按照下面的方式来做,而且它会工作得很好: var mock = MockRepository.GenerateMock<IBar>(); var foo = new Foo(mock); 然而,在Moq这似乎并没有以同样的方式工作。 我正在做如下: var mock = new Mock<IBar>(); var foo = new Foo(mock); 然而,现在它失败了 – 告诉我“不能从'Moq.Mock'转换为'IBar'。我在做什么错了?Moq的推荐方式是什么?
我试图添加unit testing到我已经build立的ASP.NET MVC应用程序。 在我的unit testing中,我使用下面的代码: [TestMethod] public void IndexAction_Should_Return_View() { var controller = new MembershipController(); controller.SetFakeControllerContext("TestUser"); … } 通过以下帮助程序来模拟控制器上下文: public static class FakeControllerContext { public static HttpContextBase FakeHttpContext(string username) { var context = new Mock<HttpContextBase>(); context.SetupGet(ctx => ctx.Request.IsAuthenticated).Returns(!string.IsNullOrEmpty(username)); if (!string.IsNullOrEmpty(username)) context.SetupGet(ctx => ctx.User.Identity).Returns(FakeIdentity.CreateIdentity(username)); return context.Object; } public static void SetFakeControllerContext(this Controller controller, string username = […]