使用RhinoMocks,我試圖存根屬性的getter值。該屬性被定義爲只有getter訪問權的接口的一部分。打樁一個屬性得到使用犀牛製品
但是,我得到錯誤「無效的調用,最後一次調用已被使用或沒有調用(確保您正在調用虛擬(C#)/ Overridable(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");
}
}
@亞當,因爲屬性是隻讀的,我無法設置就可以了。但是,您提供給Stub屬性的代碼片段完美無缺。我傻,我想除了:) – Santhosh
StoreDeviceID所有其他選項沒有一個二傳手,讓您的第一條語句'stubRepository.StoreDeviceID =「測試」;'將無法工作。 –
啊 - 對不起。我會更新我的答案 - 很高興你能夠正常工作。 –