コントローラ用のユニットテストをしています。私はビジネスコンポーネントを嘲笑しています。 BCには、コントローラーが構築されたときに私がコントローラーを聴いているという公のイベントがあります。嘲笑されたオブジェクトのイベントを聞くにはどうすればいいですか?
私がいる問題は、私が述べ期待エラーを得続けるです: "IBC.add_MessageRaised(MessageEventHandler)期待#:1実際の#:0"。
しかし、私はテストでそのようなことは期待していません。私はそれが模擬されたオブジェクト(この場合BC)のイベントを聞くためにコントローラを設定することと関係があるのだろうかと思っています。コントローラーにモックからのイベントを聞く別の方法はありますか?
私はMessageRaisedイベントを発生させるモックを得る方法も考えていますが、それはまったく別の質問かもしれません。ここで
はコードです:次のコードは、モックオブジェクトのANを使用しているようだ
ビジネスコンポーネント・インタフェース
public interface IBC
{
event MessageEventHandler MessageRaised;
XmlDocument GetContentXml(string path);
}
コントローラ
private readonly IBC _bc;
public Controller(IBC bc)
{
_bc = bc;
_bc.MessageRaised += MessageWatch;
}
private void MessageWatch(object sender, MessageEventArgs e)
{
if (MessageRaised != null)
MessageRaised(sender, e);
}
ユニットテスト
MockRepository Mockery = new MockRepository();
TFactory _tFac;
IView _view;
Presenter _presenter = new Presenter();
IBC _bc = Mockery.DynamicMock<IBC>();
Controller _controller = new Controller(_bc);
_tFac = new TFactory(Mockery);
_tFac.Create(ref _view, ref _presenter, ref _controller);
[Test]
public void View_OnGetContentXmlButtonClick_Should_SetXmlInView()
{
//SETUP
XmlDocument xmlDocument = new XmlDocument();
using (Mockery.Record())
{
SetupResult.For(_view.FilePath).Return("C:\Test.txt");
Expect.Call(_bc.GetContentXml("C:\Test.txt")).Return(xmlDocument);
_view.Xml = xmlDocument.InnerXml;
}
//EXECUTE
using (Mockery.Playback())
{
_presenter.View_OnGetContentXmlButtonClick();
}
}
ありがとうございました!私はBackToRecord()メソッドについて知らなかったので、もう1つの質問はいくつかの助けになりました。 –