異なる値のサービスに対して複数のリクエストが行われ、複数の完了イベントが発生する非同期プロセスをテストしようとしています。
このアプリは、WP7クラスライブラリプロジェクトのコードとテストを備えたWP7アプリケーションです。他のすべてのテスト(モックを使用)は正常に機能します。このテストだけが機能しません。
テストは次のとおりです。
[Test]
public void Should_referesh_all_stocks_held_in_collection()
{
var fakeStockService = new Mock<IStockService>();
var msftStock = new StockViewModel { Symbol = "MSFT", Name = "Microsoft", Price = 12.5m, Change = "+1" };
var googStock = new StockViewModel { Symbol = "GOOG", Name = "Google", Price = 12.0m, Change = "-1" };
var target = new StockSummaryViewModel(fakeStockService.Object);
target.Stocks.Add(msftStock);
target.Stocks.Add(googStock);
fakeStockService.Setup(s => s.GetStock("MSFT"))
.Raises(s => s.StockQuoteReceived += null, new StockQuoteEventArgs(new QuoteReceived { Symbol = "MSFT", Name = "Microsoft Corp", Last = "13.5", Change = "+1" }));
fakeStockService.Setup(s => s.GetStock("GOOG"))
.Raises(s => s.StockQuoteReceived += null, new StockQuoteEventArgs(new QuoteReceived { Symbol = "GOOG", Name = "Google", Last = "11.5", Change = "-0.5" }));
target.Refresh();
Assert.AreEqual(2, target.Stocks.Count);
var stock = target.Stocks.Single(s => s.Symbol == "MSFT");
Assert.IsTrue(stock.Change == "+1" && stock.Price == 13.5m);
stock = target.Stocks.Single(s => s.Symbol == "GOOG");
Assert.IsTrue(stock.Change == "-0.5" && stock.Price == 11.5m);
}
2番目のイベントが発生せず、代わりに最初のレイズが2回発生するため、テストは失敗します。
私は何が欠けていますか?