【发布时间】:2022-02-03 06:23:20
【问题描述】:
我有一个界面
public interface ISomething
{
ISomethingElse<T> GetInstance<T>();
}
现在我想模拟一下
这行得通:
var mock = new Mock<ISomething>();
mock.Setup(x => x.GetInstance<MyClass>()).Returns(Mock.Of<ISomethingElse<MyClass>>());
但我需要一个通用的方法
如果返回类型只是 ISomethingElse 我可以写
var mock = new Mock<ISomething>();
mock.Setup(x => x.GetInstance<It.IsAnyTpye>()).Returns(Mock.Of<ISomethingElse>());
但是(显然)这是行不通的。
如何以更通用的方式实现这一目标?
var mock = new Mock<ISomething>();
mock.Setup(x => x.GetInstance<It.IsAnyTpye>()).Returns(Mock.Of<ISomethingElse<???>>());
【问题讨论】:
-
我认为这是不可能的。另外,在进行单元测试时,我们使用一组确定的标准进行测试并验证确定的结果,那么预期的通用测试是否有意义?我们在测试什么?
-
@Jimmy 我不想测试
GetInstance,但我在我想测试的方法上得到了NullReferenceException。查看我的答案,这不是我要求的,而是我的问题的解决方案。
标签: c# unit-testing mocking moq