我試圖測試一種方法。 我想ensrur有在法(呼叫服務)方法調用 代碼看起來是這樣的:旁路配置測試
using(proxy = new Proxy())
{
proxy.CallService();
}
我換用假對象中的代理(使用TypeMock) 卻得到因錯誤僞造的對象放置在塊的末尾。 我不想刪除該「使用」塊。 謝謝
我試圖測試一種方法。 我想ensrur有在法(呼叫服務)方法調用 代碼看起來是這樣的:旁路配置測試
using(proxy = new Proxy())
{
proxy.CallService();
}
我換用假對象中的代理(使用TypeMock) 卻得到因錯誤僞造的對象放置在塊的末尾。 我不想刪除該「使用」塊。 謝謝
聲明:我在Typemock
工作,如果你使用的是排列法斷言API,你可以使用Members.ReturnRecursiveFakes 當你創建你的假對象(注意:這是版本5.2.0的默認值) 這也會自動僞造Dispose方法。
所以你的測試將是這樣的:
var fake = Isolate.Fake.Instance<Proxy>(Members.ReturnRecursiveFakes);
Isolate.WhenCalled(() => fake.CallService()).IgnoreCall();
Isolate.Swap.NextInstance<Proxy>().With(fake);
UnderTest classUnderTest = new ClassUnderTest();
classUnderTest.MethodUnderTest(); // assuming the Proxy instance is used here.
Isolate.Verify.WasCalledWithAnyArguments(()=>fake.CallService());
我想補充一下喬恩斯基特說,我想創建一個單獨的測試,這將確保調用Dispose方法。
我認爲在每種測試方法中斷言一件事情是一種很好的做法,這樣當測試分手時,您會立即知道原因。
使模擬對象期望被處置。 (我不知道TypeMock,但在其他一些模擬框架中,這只是在「記錄」階段自己調用Dispose
的一種情況。)事實上,我會說,如果沒有測試是錯誤的,因爲可以推測你想確保代理是被丟棄。
只是指示您的代理模擬器以期望調用Dispose()
以及。如果您在使用反射嘲笑你需要做這樣的
var proxyMock = MockManager.Mock(typeof(Proxy));
// set up regular calls to proxy, e.g.
proxyMock.ExpectCall("CallService");
proxyMock.ExpectCall("Dispose");
東西自然嘲笑發出呼叫Dispose()
在使用塊。
使假冒對象實現IDisposable:
class FakeObject : IDisposable
{
public void Dispose() {}
}
OP正在使用TypeMock,所以沒有明確的假代理類。 – 2009-04-22 07:45:33