我有這種方式的C#代碼設置。模擬內部函數的響應,但測試外部函數
public class Client : IClient
{
public string funcA()
{
var output = funcB(1);
//Do something on output and produce finalResult
return finalResult;
}
public string funcB(int x)
{
// Some operations on produces string result
return result;
}
}
我想嘲笑funcB輸出,但讓funcA執行基於funcB的輸出。
在我的測試類我做到以下幾點:
public class MockClient
{
private Mock<IClient> _mockClient;
public MockClient()
{
_mockClient = new Mock<IClient>();
}
[TestMethod]
public void TestClient()
{
_mockClient.Setup(foo => foo.funcB(It.IsAny<int>())).Returns("test");
var testOutput = _mockClient.Object.funcA();
}
}
變量testOutput返回NULL。我明白爲什麼,因爲該對象是從Interface創建的。我不知道如何正確解決這個問題。有關這方面的任何意見都會有所幫助
謝謝!這有幫助,但它甚至沒有使CallBase = true。這裏有什麼意義?也是關於製作虛擬的部分。 – Trancey