[英]Test: How to verify that a method is called?
許多Mock框架都有一個功能來驗證方法是否被調用。 但是,大多數框架都要求代碼遵循依賴注入模式。
我試圖測試的代碼不使用依賴注入模式,因此無法注入對象的模擬。
代碼:
public class TestMeClass {
public void TransformMe() { }
}
public abstract class SomeeClass {
public SomeMethod() {
CallMeMethod();
}
private void CallMeMethod() {
TestMeClass testMeClass = new TestMeClass();
testMeClass.TransformMe();
}
}
如何驗證( 單元測試 TransformMe()
是否調用了TransformMe()
?
可以用反射來完成嗎? (語言是C#)
Jon Skeet我需要你。
如何驗證(單元測試)是否調用了TransformMe()?
不。不會暴露可以驗證的公開內容。
非常糟糕的例子只是為了說明問題。
public abstract class SomeeClass{
public SomeMethod(){
CallMeMethod();
}
public bool TransformMeCalled {get;private set;}
private void CallMeMethod() {
TestMeClass testMeClass = new TestMeClass();
testMeClass.TransformMe();
TransformMeCalled = true;
}
}
可以用反射來完成嗎? (語言是C#)
再次編號。依賴項是在依賴類中內部創建的,外部參與者不知道。 外部訪問點需要可用,否則這是不可測試的。 你說的時候回答了這個問題
我試圖測試的代碼不使用依賴注入模式,因此無法注入對象的模擬。
一種選擇是重構依賴項的創建,這將允許覆蓋它,但同樣,它必須暴露給外部參與者才能被訪問
public abstract class SomeeClass{
public SomeMethod(){
CallMeMethod();
}
public abstract TestMeClass CreateTestMeClass();
private void CallMeMethod() {
TestMeClass testMeClass = CreateTestMeClass();
testMeClass.TransformMe();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.