我试图测试一种方法。 我想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