3
Moqを使用して、特定のインターフェイスのテストを作成しようとしています。インターフェイスを実装するオブジェクトの値は、この質問で「コントローラ」と呼ばれるクラスによって設定されます。Moqで取得できない虚偽のインターフェイスから値を取得するにはどうすればよいですか?
インタフェース:
public interface ITestInterface
{
int number {set;}
}
そして、私のモック:
Mock<ITestInterface> myTestMock = new Mock<ITestInterface>();
テストを行うには、私は、コントローラが嘲笑クラスの数を設定することを期待、しかし、私はを取得する必要がありますそれをテストする値。このような何か:もちろん
Controller c = new Controller(myTestMock.Object);
c.Initialize(); //initialization will set number to something
Assert.AreEqual(myTestMock.number, 3);
私はその値を読み取ることができないので、私は、インターフェイスが「取得」メソッドを持っていないことを考えると、エラーが発生します。
インタフェースを変更せずに私のモックを取得するにはどうすればよいですか?
代わりに、独自のモックオブジェクトを作成し、多分あなたは' myTestMock.VerifySetを使用することができます(X => x.number = 3); ' –
@ThariqNugrohotomoそれを"アクセサーが足りない"という同じエラーが表示されます。 – Th0rndike
@ Th0rndike - 'Assert'行を削除します。 @Thariqは正しい 'myTestMock.VerifySet(x => x.number = 3);'が動作します。 (ちょうどそれをテストしました、それは私にとっても新しいものでした)。 - 'c.Initialize();'と仮定すると、実際には数値が設定されます。私は 'myTestMock.VerifySet(x => x.number = 4);を試してみましたが、4ではなく3に設定されていることを認識したのでテストに失敗しました。 – Corak