【发布时间】:2016-11-24 15:37:48
【问题描述】:
许多 Mock 框架具有验证方法是否被调用的功能。然而,大多数框架要求代码遵循依赖注入模式。
我尝试测试的代码不使用依赖注入模式,因此无法注入对象的模拟。
代码示例:
public class TestMeClass {
public void TransformMe() { }
}
public abstract class SomeeClass {
public SomeMethod() {
CallMeMethod();
}
private void CallMeMethod() {
TestMeClass testMeClass = new TestMeClass();
testMeClass.TransformMe();
}
}
如何验证(单元测试)TransformMe() 被调用?
可以使用反射来完成吗? (语言是 C#)
乔恩·斯基特我需要你。
【问题讨论】:
-
该方法很难测试,因为依赖项是在父类本身中初始化的。
-
这真的是不可能的。如果您想测试您的 SomeeClass Logic 是否正常运行,您将需要以某种方式注入 TestMeClass 的一个实例,以便您可以监视它的方法。
-
我猜如果你使用
mock库你可以使用verify方法。看this -
如果您只需要测试一次,我会使用 File.Write(...) 来检查该方法是否被调用。如果您需要进行单元测试,我建议您进行重构。
-
@esiprogrammer 否定
标签: c# unit-testing testing mocking