0
我在我的應用程序下面的代碼:爲什麼JustMock聲稱我的嘲弄方法永遠不會被調用?
public class DirectoryCrawler
{
private IPathWrap _path;
private IDirectoryWrap _directory;
private ITrackedFileStore _trackedFileStore;
private IFileWrap _file;
public DirectoryCrawler(IPathWrap path, ITrackedFileStore trackedFileStore, IDirectoryWrap directory, IFileWrap file)
{
_path = path;
_trackedFileStore = trackedFileStore;
_directory = directory;
_file = file;
}
public void CheckDirectoryContents(string baseDirectory)
{
var trackedFiles = _trackedFileStore.GetTrackedFilesInPath(baseDirectory);
}
}
我單位通過測試它:
[TestClass]
public class DirectoryCrawlerTests
{
private MockingContainer<DirectoryCrawler> _mockContainer;
[TestInitialize]
public void Setup()
{
_mockContainer = new MockingContainer<DirectoryCrawler>();
}
[TestMethod]
public void Requests_Tracked_Files_In_Path()
{
var instance = _mockContainer.Instance;
instance.CheckDirectoryContents("C:\\Test");
_mockContainer.Assert<ITrackedFileStore>(x => x.GetTrackedFilesInPath(Arg.IsAny<string>()), Occurs.Once());
}
}
但是,斷言失敗自稱Result Message: Occurrence expectation failed. Expected exactly 1 call. Calls so far: 0
爲什麼JustMock未檢測發生是否正確?這是最新的JustMock Lite Nuget包(2014.1.1317.4)
我假設'_trackedFileStore'是一個注入的依賴項?我們可以看到你的'_mockContainer'設置嗎? –
對不起,我添加了完整的測試類和實現類。 – KallDrexx
你永遠不會把'ITrackedFileStore'的模擬傳遞給'DirectoryCrawler'模擬。因此,模擬不能驗證它是否被調用。這也可能與你嘲笑一個具體對象有關,我們通常不這樣做(我也更熟悉Moq)。 –