この動作を次のテスト ケースに分離しました。プロパティに設定されたプロパティを期待/検証する方法を教えてくれる人に感謝します-現在、私にはあまり意味をなさないList<T>
内部で何かが起こっているようです. It.Is<T>(predicate)
サンプル コードは VS2008 からコンソール アプリとして実行されます - Moq 2.6 への参照を追加する必要があります (私は 2.6.1014.1 を使用しています) - 何が起こっているかを確認するには、さまざまな ExpectSet ステートメントのコメントを外してみてください...
using System;
using Moq;
using System.Collections.Generic;
namespace MoqDemo {
public interface IView {
List<string> Names { get; set; }
}
public class Controller {
private IView view;
public Controller(IView view) {
this.view = view;
}
public void PopulateView() {
List<string> names = new List<string>() { "Hugh", "Pugh", "Barney McGrew" };
view.Names = names;
}
public class MyApp {
public static void Main() {
Mock<IView> mockView = new Mock<IView>();
// This works - and the expectation is verifiable.
mockView.ExpectSet(mv => mv.Names);
// None of the following can be verified.
// mockView.ExpectSet(mv => mv.Names, It.Is<Object>(o => o != null));
// mockView.ExpectSet(mv => mv.Names, It.Is<List<string>>(names => names.Count == 3));
// mockView.ExpectSet(mv => mv.Names, It.IsAny<IList<String>>());
Controller controller = new Controller(mockView.Object);
controller.PopulateView();
try {
mockView.VerifyAll();
Console.WriteLine("Verified OK!");
} catch (MockException ex) {
Console.WriteLine("Verification failed!");
Console.WriteLine(ex.Message);
}
Console.ReadKey(false);
}
}
}
}