私は単項式テストを書いて解析エラーをチェックしようとしています。私はファイルからデータをストリーミングして解析し、解析結果をyield returnで返し、それをデータレイヤーに渡して一括挿入します。Rhino Mockからyield returnを実行する
データレイヤーへの呼び出しを欺くのに問題があります。それは嘲笑されているので、実際にはyield yieldから値を列挙することはないので、私の解析メソッドは決して実行されません。
私は明らかにうまくいかないようなものを試しました。 whileループ内から呼び出されているのを必要とせず - それが孤立してテストしたユニットとすることができるので、一つの最適解は、別の方法で「//魔法を行う」で起こるものを置くことであろう
[TestMethod]
[ExpectedException(typeof(ApplicationException))]
public void ProcessFile_InvalidInput_ThrowsException()
{
var mock = new MockRepository();
var stream = new MemoryStream();
var streamWriter = new StreamWriter(stream);
streamWriter.WriteLine("\\:fail");
streamWriter.Flush();
stream.Position = 0;
var datamanager = mock.Stub<IDataManager>();
TestContainer.RegisterInstance(datamanager);
var repos = new ProcessingRepository();
TestContainer.BuildUp(repos);
using (mock.Record())
{
Expect.Call(file.InputStream).Return(stream);
Expect.Call(delegate() { repos.Save(new List<string>()) }).IgnoreArguments();
}
using (mock.Playback())
{
repos.ProcessFile(stream);
}
}
WhenCalledは私が探していたものでした。ありがとう! – bmancini