C# 4.0 SystemUnderTest中的方法调用了AssertWas
我正在进入TDD;使用nUnit和RhinoMocks 3.5 我试图弄清楚如何在SystemUnderTest(SUT)中的方法上调用AssertWas。我的理解是,您不能模拟正在测试的系统。事实上,我当前的测试导致了一个异常,因为我正在SUT上调用AssertWas 订单中心: 如何断言在SUT中调用了GetOrders?我还没能在文件里查出来 非常感谢您的帮助 编辑: 我知道SUT中的GetOrders方法应该是私有的。我回顾了Roy Osherove的单元测试艺术,了解如何测试私有方法。罗伊说公开一个方法(用来测试)并不一定是件坏事,所以我会公开它 所以我为GetOrders编写了一个测试,并断言返回值应该是一个订单列表。这就是说,我相信我需要重新构造OnViewLoad_GetOrders的测试,方法是存根从GetOrders获得的值,并断言我在该对象上的操作结果C# 4.0 SystemUnderTest中的方法调用了AssertWas,c#-4.0,tdd,rhino-mocks,C# 4.0,Tdd,Rhino Mocks,我正在进入TDD;使用nUnit和RhinoMocks 3.5 我试图弄清楚如何在SystemUnderTest(SUT)中的方法上调用AssertWas。我的理解是,您不能模拟正在测试的系统。事实上,我当前的测试导致了一个异常,因为我正在SUT上调用AssertWas 订单中心: 如何断言在SUT中调用了GetOrders?我还没能在文件里查出来 非常感谢您的帮助 编辑: 我知道SUT中的GetOrders方法应该是私有的。我回顾了Roy Osherove的单元测试艺术,了解如何测试私有方法
有人能证实和解释吗 不能在非模拟对象上使用
AssertWasCalled()
。只需通过接口抽象类OrdersPresenter
(使用提取接口重构技术),然后
var ordersPresenter=MockRepository.GenerateMock();
视图。提出(…);
_ordersPresenter.AssertWasCalled(d=>d.GetOrders);
顺便说一句
对我来说,不清楚为什么Rhinomock没有对AssertWasCalled使用泛型参数约束
public static void AssertWasCalled<T>(this T mock, Action<T> action,
Action<IMethodOptions<object>> setupConstraints)
publicstaticvoidassertwastcalled(这个T mock,Action,
行动(限制)
基本上,
T
是不受限制的,但我认为最好将其限制在像IMockMarkerInterface
这样的东西上,您不能在非模拟对象上使用AssertWasCalled()
。只需通过接口抽象类OrdersPresenter
(使用提取接口重构技术),然后
var ordersPresenter=MockRepository.GenerateMock();
视图。提出(…);
_ordersPresenter.AssertWasCalled(d=>d.GetOrders);
顺便说一句
对我来说,不清楚为什么Rhinomock没有对AssertWasCalled使用泛型参数约束
public static void AssertWasCalled<T>(this T mock, Action<T> action,
Action<IMethodOptions<object>> setupConstraints)
publicstaticvoidassertwastcalled(这个T mock,Action,
行动(限制)
基本上,T
是不受限制的,但我认为最好将其限制在IMockMarkerInterface
var ordersPresenter = MockRepository.GenerateMock<IOrderRepository>();
view.Raise(...);
_ordersPresenter.AssertWasCalled(d => d.GetOrders);
public static void AssertWasCalled<T>(this T mock, Action<T> action,
Action<IMethodOptions<object>> setupConstraints)