あなたは、あなたがそれを可能なモック呼び出しだろうインターフェイスメソッドによって抽象File.Open()
に持っています。
だから
1)インターフェイスを作成する:
public interface IFileDataSource
{
FileStream Open(string path,
FileMode mode,
FileAccess access,
FileShare share);
}
2)変更LoadConnectionDetailsFromDisk()
以下のように:
private Connection LoadConnectionDetailsFromDisk(string path, IFileDataSource fileSource)
{
using (FileStream fs = fileSource.Open(bodyFile, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
{
return this.serverConfiguration.LoadConfiguration(fs, flowProcess);
}
//more logic
}
3)試験でインターフェースを模擬し、模擬
を注入
// create a mock instance
var sourceMock = MockRepository.GenerateMock<IFileDataSource>();
// setup expectation
sourceMock.Expect(m => m.Open("path", FileMode.Open, FileAccess.Read, FileShare.ReadWrite)
.CallBack(
delegate (string path, FileMode mode, FileAccess access, FileShare share)
{
// handle a call
return true;
}).Repeat.Any();
// TODO: depends on how you are triggering LoadConnectionDetailsFromDisk method call
// inject a mock
LoadConnectionDetailsFromDisk()
を考えれば、このメソッド呼び出しから模擬テストを直接実行することはできませんので、このメソッドの呼び出し方法を示してください。
出典
2012-06-21 15:23:10
sll