私のコードは次のようになります。
public class FileFormatLookup : Dictionary<string,Func<string>>
{
private Workbook workbook;
private MemoryStream memoryStream;
public FileFormatLookup(Workbook workbook, MemoryStream memoryStream)
{
this.workbook = workbook;
this.memoryStream = memoryStream;
Add();
}
private void Add()
{
base.Add("xls", () =>
{
workbook.Save(memoryStream, SaveFormat.Excel97To2003);
return "ms-excel";
});
}
}
そして、私は以下のようにテストを書こうとしています:
class FileFormatLookupTest
{
FileFormatLookup fileFormatLookup;
private Workbook workbook;
private MemoryStream memoryStream;
[SetUp]
public void SetUp()
{
fileFormatLookup = new FileFormatLookup(workbook, memoryStream);
workbook = MockRepository.GenerateMock<Workbook>();
memoryStream = MockRepository.GenerateMock<MemoryStream>();
}
[TearDown]
public void TearDown()
{
workbook.VerifyAllExpectations();
}
[Test]
public void ShouldHaveXlsKey()
{
var xlsResult = fileFormatLookup["xls"].Invoke();
workbook.AssertWasCalled(x=>x.Save(memoryStream,SaveFormat.Excel97To2003));
}
}
これは辞書内のファンクターをテストする正しい方法ですか? このエラーがスローされます:
System.InvalidOperationException : No expectations were setup to be verified, ensure that the method call in the action is a virtual (C#) / overridable (VB.Net) method call
関数を返す辞書をテストするにはどうすればよいですか? 出来ますか?返される文字列値をアサートできますが、メソッド呼び出しはアサートできません。