OK - このテストがあります。私の OnSaveCommand はアダプターの Save メソッドをまだ呼び出しているため、失敗することを期待して書きました。しかし、驚いたことに、「呼び出しがモックで複数回実行されました」と言って失敗しました。私は完全に混乱しています。私はそれをまったくゴインクとは呼びません。私の問題は、それが何と呼ばれているかを知る方法がわからないことですか?私がコードを実行している場合、ブレークポイントをスローし、呼び出されたときにコールスタックを確認しますが、もちろんモックであるため、ここでは実際には機能しません。
いくつかのアイデアについて moq クイックスタートを見ようとしましたが、実際には困惑しています。テストの最初の部分では、DiscountsForSelectedCompany リストに値が入力されるイベントを発行します。すべてのことが起こっていることがわかります。次に、save コマンドを正しく実行しますか? 次に、エラーが発生します。私が言ったように、私は困惑しています - 誰かが私を正しい方向に向けることができれば、それは素晴らしいことです.
[Test]
public void SaveCommand_Will_Call_Adapter_SaveDiscounts_For_All_Edited_Discounts()
{
eventAggregator.GetEvent<SetCompanyIdEvent>().Publish(182);
vm.DiscountsForSelectedCompany.Single(x => x.Id == 1).IsEdited = true;
mockVariablePricingAdapter.Setup(x => x.SaveDiscounts(
It.Is<List<DisplayCompanyDiscount>>(a => a.First().Id == 1))
).Verifiable();
vm.SaveCommand.Execute();
mockVariablePricingAdapter.Verify(x => x.SaveDiscounts(It.Is<List<DisplayCompanyDiscount>>(a => a.First().Id == 1)), Times.Once());
}
ありがとう!
エイト!おっと - ちょっと!!! 「Times.Once()」を「Times.AtLeastOnec()」に変更しましたが、「モックで呼び出しが実行されませんでした:」と言って失敗した場合は十分確認してください。バグですか?