RhinoMockを使用して、プロパティのゲッター値をスタブしようとしています。このプロパティーは、ゲッター・アクセスのみを持つインターフェースの一部として定義されています。プロパティをスタブするRhino Mockを使用する
「無効な呼び出し、最後の呼び出しが使用されたか、呼び出しが行われていません(仮想(C#)/オーバーライド(VB)メソッドを呼び出していることを確認してください)これは私がスタブしているプロパティが仮想ではないことを意味するかもしれません。しかし、それはインターフェイスの一部であり、なぜこのエラーが発生するのかわかりません。
以下はコードスケルトンです。 "stubRepository.Stub(x => x.StoreDeviceID).PropertyBehavior();"という行のコメントを外すと、 "プロパティを読み書きする必要があります"という新しいエラーが発生します。私はSOで検索し、thisページを見つけました。しかし、提案された解決策は私を助けません。何かご意見は?
public interface IStore {
string StoreDeviceID {get;}
//other methods
}
public static class Store {
private IStore Repository;
public void SetRepository(IStore rep){
Repository = rep;
}
public StoredeviceID {
get{
return Repository.StoreDeviceID;
}
}
//other methods
}
public class TestClass {
[Test]
public void TestDeviceID() {
var stubRepository =
MockRepository.GenerateStub<IStore>();
Store.SetRepository(stubRepository);
//stubRepository.Stub(x => x.StoreDeviceID).PropertyBehavior();
SetupResult.For(stubRepository.StoreDeviceID).Return("test");
Assert.AreSame(Store.StoreDeviceID, "test");
}
}
@ Adam、プロパティは読み取り専用なので、設定できません。ただし、Stubに提供したコードスニペットは完全に機能します。愚かな私は、それ以外のすべてのオプションを試しました:) – Santhosh
StoreDeviceIDにはセッターがないので、最初のステートメント 'stubRepository.StoreDeviceID =" test ";'は機能しません。 –
ああ - 申し訳ありません。私は私の答えを更新します - うまくいけばうれしいです。 –