Tag: rhino mocks 3.5

在unit testing中处理多个模拟和断言

我目前有一个存储库,它使用Entity Framework进行我的CRUD操作。 这是注入我需要使用此repo的服务。 使用AutoMapper,我将实体Model投影到Poco模型上,并且服务返回poco。 如果我的对象有多个属性,那么设置然后断言我的属性的正确方法是什么? 如果我的服务有多个repo依赖项,那么设置我所有模拟的正确方法是什么? * – 一个类[setup],其中为这些测试装置配置了所有模拟和对象?***** 我想避免进行10次测试,每次测试在属性上有50个断言,并且每次测试都有几十个模拟设置。 这使得可维护性和可读性变得困难。 我已经阅读了unit testing艺术,并没有发现任何建议如何处理这种情况。 我使用的工具是Rhino Mocks和NUnit。 我也在SO上找到了这个,但它没有回答我的问题: 正确的unit testing服务/存储库交互 这是一个表达我所描述内容的示例: public void Save_ReturnSavedDocument() { //Simulate DB object var repoResult = new EntityModel.Document() { DocumentId = 2, Message = “TestMessage1”, Name = “Name1”, Email = “Email1”, Comment = “Comment1” }; //Create mocks of Repo Methods – Might […]

Rhino – 模拟类而不是覆盖虚方法

如果我正在嘲笑一个类,如下所示,有什么方法可以让模拟不重写虚方法? 我知道我可以简单地删除虚拟修饰符,但实际上我想在以后删除此方法的行为。 换句话说,除了删除虚拟修饰符之外,我怎样才能通过此测试: namespace Sandbox { public class classToMock { public int IntProperty { get; set; } public virtual void DoIt() { IntProperty = 1; } } public class Foo { static void Main(string[] args) { classToMock c = MockRepository.GenerateMock(); c.DoIt(); Assert.AreEqual(1, c.IntProperty); Console.WriteLine(“Pass”); } } }

Rhinomocks – 嘲笑代表

public interface IServiceInvoker { R InvokeService(Func invokeHandler) where T : class; } public class MediaController : Controller { private IServiceInvoker _serviceInvoker; public MediaController(IServiceInvoker serviceInvoker) { _serviceInvoker = serviceInvoker; } public JsonResult GetAllMedia() { var media = _serviceInvoker.InvokeService<IMediaService, List>(proxy => proxy.GetAllMediaInJson()); JsonResult jsonResult = new JsonResult(); jsonResult.Data = media; jsonResult.JsonRequestBehavior = JsonRequestBehavior.AllowGet; return jsonResult; } [TestClass] […]

呼叫无效,最后一次呼叫已被使用或未进行任何呼叫

当我尝试将mock设置为具有PropertyBehavior()时,我收到此错误: System.InvalidOperationException:System.InvalidOperationException:无效调用,最后一次调用已被使用或未进行任何调用(请确保您正在调用虚拟(C#)/ Overridable(VB)方法)。 我试图只使用Rhino Mocks 3.5 (安排,行动,断言) 这是我的代码: private IAddAddressForm form; private AddAddressMediator mediator; [TestInitialize()] public void MyTestInitialize() { form = MockRepository.GenerateMock(); mediator = new AddAddressMediator(form); // Make the properties work like a normal property Expect.Call(form.OKButtonEnabled).PropertyBehavior(); //I tried this too. I still get the exception //SetupResult.For(form.OKButtonEnabled).PropertyBehavior(); } [TestMethod] public void TestOKButtonEnabled() { form.OKButtonEnabled = true; […]