メソッドでは、通常、次のようなことを行います。
string[] lines = File.ReadAllLines(filename);
テストのために、ファイル システムをモック アウトできるようにしたいのですが、SystemWrapperについて肯定的なコメントを聞いたので、このライブラリを使用したいと思います。
私が理解しているように、SystemWrapper を使用するには、インターフェイス ベースの呼び出しを行う必要があります。それはいいです。したがって、上記のコード行は次のようになります。
string[] lines = new FileWrap().ReadAllLines(filename);
今、私のテスト方法は次のようになります: (私は Microsoft.VisualStudio.TestTools.UnitTesting を Rhino Mock と組み合わせて使用しています)
[TestMethod()]
public void Test_this_method()
{
IFileWrap fileWrapRepository = MockRepository.GenerateMock<IFileWrap>();
fileWrapRepository.expect(x => x.ReadAllLines("abc.txt").Return(new string[] {"Line 1", "Line 2", "Line 3"});
MethodThatReadsLines();
}
この例は、SystemWrapper のGetting Startedページの例を基にしています。
ただし、これを行うと、メソッドはモックされたメソッドを呼び出していません。呼び出してFile.ReadAllLines
います。これは私が期待しているものではありません。
モックする正しい方法は何File.ReadAllLines
ですか?