我試圖更接近100%的代碼覆蓋率,並且我對模擬OpenFileDialog感興趣。從一些研究,似乎一個很好的答案是創建一個IFileDialogService,像這樣的代碼Open File Dialog MVVM:模擬OpenFileDialog的選項
public interface IOpenFileService
{
string FileName { get; }
bool OpenFileDialog()
// Many other methods and properties of OpenFileDialog here...
}
然而,這意味着我必須實現所有屬性和打開文件對話框的方法,只是讓他們是一個傳遞來調用真正的OpenFileDialog的屬性和方法。
我希望這樣做有MockContainer和RealContainer,每個將返回他們的打開文件對話框的版本:
public class MockContainer
{
IOpenFileDialog FileDialog { get { return new MockOpenFileDialog(); } }
}
public class RealContainer
{
IOpenFileDialog FileDialog { get { return new OpenFileDialog(); } }
}
但是,我不能這樣做,因爲他們沒有實現一個共同的接口。如果我能夠採用這種方法,則不需要在IOpenFileService中爲OpenFileDialog所需的所有內容創建傳遞方法。每個容器只會返回一個調用者可以使用的對話框。
有沒有一種方法可以使這種方法奏效,還是IOpenFileService真的可以做到這一點?
注:我知道嘲笑框架。我想今天快速實現一些東西,並且不想花時間學習一個嘲諷的框架。我想我可以很容易地嘲笑它。
OpenFileDialog是密封的嗎? –
是的。我想了解它的子類,但不能... –