最小起订量 - 设置通用 Return 类型
Moq - Setup Generic Return type
如何在最小起订量中设置通用 return类型?
我有以下界面:
public interface IFoo
{
T Bar<T>();
}
现在我想设置 Bar<T>()
在测试中工作
var foo = new Mock<IFoo>();
foo.Setup(x => x.Bar<It.IsAnyType>()).Returns(new Mock<???>().Object);
如何填写 ???
,或者如果无法填写,那么我如何 return 通用模拟?
有 100 多种类型,我尽量避免嘲笑它们。
如果任何类型的调用 return 为 null,测试就会中断(因为代码抛出异常),遗憾的是,这是默认的非模拟行为。
如果T
是引用类型即
public interface IFoo {
T Bar<T>() where T : class;
}
然后创建一个苗条的模拟会更容易
public class MockFoo : IFoo {
private MockFoo() {
}
public T Bar<T>() where T : class => Mock.Of<T>();
public static IFoo New() => new MockFoo();
}
可以在安排测试和使用 MOQ 模拟 Bar
的输出时初始化
//Arrange
IFoo foo = MockFoo.New();
//...
如何在最小起订量中设置通用 return类型?
我有以下界面:
public interface IFoo
{
T Bar<T>();
}
现在我想设置 Bar<T>()
在测试中工作
var foo = new Mock<IFoo>();
foo.Setup(x => x.Bar<It.IsAnyType>()).Returns(new Mock<???>().Object);
如何填写 ???
,或者如果无法填写,那么我如何 return 通用模拟?
有 100 多种类型,我尽量避免嘲笑它们。 如果任何类型的调用 return 为 null,测试就会中断(因为代码抛出异常),遗憾的是,这是默认的非模拟行为。
如果T
是引用类型即
public interface IFoo {
T Bar<T>() where T : class;
}
然后创建一个苗条的模拟会更容易
public class MockFoo : IFoo {
private MockFoo() {
}
public T Bar<T>() where T : class => Mock.Of<T>();
public static IFoo New() => new MockFoo();
}
可以在安排测试和使用 MOQ 模拟 Bar
//Arrange
IFoo foo = MockFoo.New();
//...