Questions tagged «rhino-mocks»

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 …

5
Rhino Mocks上的模拟和存根之间有什么区别?
我对此玩的还不够,通常使用模拟,但是我想知道两者之间的区别以及何时在Rhino Mocks上使用一个或另一个。 更新: 我也用Ayende的话找到了我问题的答案: 存根和模拟的区别 您可以在本文中获得以下术语的实际定义:Mocks Are n't Stubs。我想从Rhino Mocks的角度着眼于差异。 模拟是可以设置期望值的对象,它将验证期望的动作确实已经发生。存根是您用来传递给被测代码的对象。您可以对它设置期望,以便它以某些方式起作用,但是这些期望永远不会得到验证。存根的属性将自动表现为正常属性,并且您无法对它们设置期望。 如果要验证被测代码的行为,将使用具有适当期望值的模拟并进行验证。如果您只想传递可能需要以某种方式起作用但不是测试重点的值,则可以使用存根。 重要说明:存根永远不会导致测试失败。

7
使用C#和RhinoMocks进行测试驱动开发的最佳实践
从目前的情况来看,这个问题不适合我们的问答形式。我们希望答案能得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 为了帮助我的团队编写可测试的代码,我提出了一些简单的最佳实践,以使我们的C#代码库更可测试。(有些观点涉及C#模拟框架Rhino Mocks的局限性,但这些规则也可能更普遍地适用。)是否有人遵循任何最佳实践? 为了最大化代码的可测试性,请遵循以下规则: 首先编写测试,然后编写代码。原因:这样可确保您编写可测试的代码,并确保每一行代码都可以为其编写测试。 使用依赖注入设计类。原因:您不能嘲笑或测试看不见的东西。 使用Model-View-Controller或Model-View-Presenter将UI代码与其行为分开。原因:允许在最小化无法测试的部分(UI)的同时测试业务逻辑。 不要编写静态方法或类。 原因:静态方法很难或不可能隔离,Rhino Mocks无法模拟它们。 编程关闭接口,而不是类。原因:使用接口可以阐明对象之间的关系。接口应定义对象从其环境中需要的服务。同样,可以使用Rhino Mocks和其他模拟框架轻松模拟接口。 隔离外部依赖项。原因:无法测试未解决的外部依赖关系。 将要模拟的方法标记为虚拟。原因:Rhino Mocks无法模拟非虚拟方法。

7
模拟Asp.net-mvc控制器上下文
因此,控制器上下文取决于一些asp.net内部。有什么方法可以完全模拟这些以进行单元测试?当我只需要,例如Request.HttpMethod返回“ GET”时,似乎很容易用大量设置阻塞测试。 我已经在网上看到了一些例子/帮助者,但其中有些是过时的。认为这将是保持最新和最佳状态的好地方。 我正在使用最新版本的犀牛模拟

1
Castle DynamicProxy-创建涉及用作GTR的GTP的代理时失败
好吧,现在我真的很困惑。 我最初遇到了这个问题,根据发布者的说法,这是ILMerges到最新Rhino.Mocks库中的Castle.DynamicProxy版本的问题。根据有关此问题的几个权威机构的说法,它已被固定在最新的Castle中,但该图书馆尚未将其改成新的Rhino.Mocks。大多数人都说“只需下载Rhino源码和最新的Castle并构建自己的版本”。 因此,我正是这样做的;我从Ayende的GitHub上获取了Rhino中继源的ZIP,打开并构建了它。然后,像一个好的TDDer一样,我创建了一个单元测试以确保所做的更改有效(因为最新的Castle将DynamicProxy折叠到Core中,需要进行一些重要的引用更改): [Test] public void MockOfInterfaceMethodWithInterfaceGTR() { var mock = mocks.DynamicMock<ITestRestrictedInterface>(); Assert.NotNull(mock); Expect.Call(mock.TestMethod(new Object2())).IgnoreArguments().Return(5); mocks.ReplayAll(); Assert.AreEqual(5, mock.TestMethod(new Object2())); } ... internal interface ITestGenericInterface<TRest> where TRest:IObject1 { int TestMethod<T>(T input) where T : TRest; } internal interface ITestRestrictedInterface:ITestGenericInterface<IObject2> { } internal interface IObject1 { } internal interface IObject2:IObject1 { } …
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.