【发布时间】:2016-05-29 20:34:09
【问题描述】:
public static void Mock(out IProgram prog, out IJson json)
{
prog = Substitute.For<IProgram>();
IJson = Substitute.For<IJson>();
prog.SaveProg(1, 1, 1, "Somthing", 1, DateTime.UtcNow,
(DateTime.UtcNow + TimeSpan.FromDays(10)),
10, "someemail@email.com", DateTime.UtcNow, 1)
.Returns(ObjectResult<int?>);
}
调用Returns(ObjectResult<int?>) 时出现错误,因为ObjectResult 是受保护的类。我该如何解决这个问题才能从实际方法中调用我的模拟方法?
【问题讨论】:
-
感谢 Arturo 编辑
-
虚构示例的问题在于,如果您不检查它们,它们比没有意义更糟糕。您可能希望解决您的问题的许多问题。您给出的代码示例无法编译。
.Returns需要一个实例,而不是一个类型。您当前正在模拟接口,这些接口不能具有受保护的方法。ObjectResult<T>不是受保护的类(需要嵌套类才能受到保护)。 ObjectResult有不同的版本,其中一些是密封的,其中一些具有受保护的构造函数。您尝试使用哪个版本? -
你为什么关心你看不到的类的结果?您能否以一种根据 ObjectResult
的结果起作用的方式进行测试,这样您就不必接触类?
标签: c# unit-testing object mocking nsubstitute