无法使用rhino模拟将MSTest转换为NUnit测试

时间:2015-07-29 20:10:09

标签: c# asp.net unit-testing mocking rhino-mocks

我正在关注这篇文章以实现MVP模式。 http://www.bradoncode.com/blog/2012/04/mvp-design-pattern-survival-kit.html

在文章的最后,执行测试,该测试在Microsoft Visual Studio测试环境中执行,其中Mock用于模拟依赖项。 在我的项目中,我使用NUnit Test环境和RhinoMock来模拟依赖性。

在文章中,这些是SetUp的测试:

mockView.SetupSet(v => v.Products = It.Is<List<ProductItem>>(i => i.Count == 3))
        .Verifiable();
mockView.SetupSet(v => v.Total = It.Is<decimal>(t => t == 8.97m))
        .Verifiable();
mockView.SetupSet(v => v.SubTotal = It.Is<decimal>(t => t == 8.97m))
        .Verifiable();
mockView.SetupSet(v => v.Discount = It.Is<decimal>(t => t == 0m))
        .Verifiable();

我喜欢将这些行转换为设置期望值,这就是我尝试过的:

_view = MockRepository.GenerateMock<IView>();
_controller = new Presenter(_view);            
_view.Expect(v => v.List = ???); //  List is my property defined in IView
  

注意:我正在使用NUnit和Rhino模拟进行模拟。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

“假对象”的语法。除了 - &gt; Verify Exception是验证行为的旧方法。

您的代码段中的每一行都会对单个属性产生期望。 进行等效验证的“最新”和最简单的方法是:(将以下行放在Assert部分中)

_view.AssertWasCalled(x => x.Products = Arg<IList<ProductItem>>
                            .Matches(list => list.Count == 3));
_view.AssertWasCalled(x => x.Total = 8.97m);
_view.AssertWasCalled(x => x.SubTotal = 8.97m);
_view.AssertWasCalled(x => x.Discount = 0m);