我们到底什么时候需要使用.As
Moq提供的方法?
来自快速入门文档:
// implementing multiple interfaces in mock
var foo = new Mock<IFoo>();
var disposableFoo = foo.As<IDisposable>();
// now the IFoo mock also implements IDisposable :)
disposableFoo.Setup(df => df.Dispose());
但我只是不明白为什么我们要这样做。你能给我一个实际的例子吗?
您可以使用As当您需要测试实现的对象时的方法multiple接口。
In this示例中,如果输入对象也实现 IDisposable,则测试的代码将具有特定行为。像这样的东西:
public void Execute(IFoo input)
{
// do process...
IDisposable disposable = input as IDisposable;
if (disposable != null)
{
disposable.Dispose();
}
}
类的实现:
public class ConcreteFoo: IFoo, IDisposable
{
...
}
EDIT:
所需起订量的配置:
var foo = new Mock<IFoo>();
var disposableFoo = foo.As<IDisposable>();
disposableFoo.Setup(df => df.Dispose());
// Verify whether the Dispose() method was called
// That's true only if we use the As method from Moq.
testedClass.Execute(disposableFoo);
disposableFoo.Verify(m => m.Dispose());
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)