我在我的一个方法中列出了一个代码,我想测试一下:
using (var obj1 = provider.GetObj1Instance())
{
/* Do some stuff */
obj1.DoAction();
}
提供者是我嘲笑的对象:
provider = MockRepository.GenerateMock<IProvider>();
但方法GetObj1Instance()返回具体类型的对象。在模拟之后我现在得到NullRefrenceException,因为来自模拟提供程序的方法GetObj1Instance()返回null。
然后我抄写了obj1:
var stubbedObj1 = MockRepository.GenerateStub<Obj1>();
provider.Stub(o => o.GetObj1Instance()).Return(stubbedObj1);
但这还不够,因为在obj1.DoAction()中;引用了引发NullReferenceException
的私有变量在测试执行期间,我想不执行obj1.DoAction()或只是注册它被调用。如何实现?
以下这一行并不能防止DoAction方法原始执行。
stubbedObj1.Stub(u => u.DoAction()).Do(new Action(() => { }));