我想知道是否有任何方法可以伪造所有可能类型(或指定子类型)的通用方法调用?
例如,假设我们有这个出色的IBar接口。
public interface IBar
{
int Foo<T>();
}
我可以伪造对此IBar的Foo调用的依赖关系,而不必指定T为任何特定类型吗?
[TestFixture]
public class BarTests
{
[Test]
public void BarFooDoesStuff()
{
var expected = 9999999;
var fakeBar = A.Fake<IBar>();
A.CallTo(() => fakeBar.Foo<T>()).Returns(expected);
var response = fakeBar.Foo<bool>();
Assert.AreEqual(expected, response);
}
}
谢谢!
When <type> with Id <id> is retrieved from repository
这样的步骤。通过上述方法,我不必为每个<type>准备一个步骤绑定方法。 - Tomasz PluskiewiczA.CallTo(validationService).WithReturnType<bool>().Returns(true);
如果需要的话,我可以稍后覆盖其中一个具有特定行为的方法。 - Buh BuhA.CallTo(fakeBar).Where(call => call.Method.Name == nameof(fakeBar.Foo)).WithReturnType<int>().Returns(expected);
- Lech OsińskiIExporter
,使用ISerializer
来序列化各种对象的方法。在我的“Exporter”测试中,我不关心序列化器返回什么,但我不希望它返回空字符串。因此,我使用了A.CallTo(serializer).WithReturnType<string>().Returns(fixture.Create<string>());
但是,如果我稍后向ISerializer
添加一个非序列化方法,我的测试可能会出现问题。 - thomasb