我想在一個簡單的界面使用FakeItEasy 2.0.0僞造一個屬性:FakeItEasy設置屬性沒有獲取訪問?
public interface IPerson
{
int Age { set; }
}
請注意,我沒有get訪問。我試圖寫的測試是:
public void SetsAge()
{
var fakePerson = A.Fake<IPerson>();
A.CallToSet(() => fakePerson.Age).To(42).MustHaveHappened();
fakePerson.Age = 42;
}
但含有A.CallToSet線失敗,編譯:
這是相當不言自明,但令人迷惑,因爲我沒有試圖獲得財產的價值。
我是否必須提供一個get訪問器才能編譯(即使我不想要get訪問器)? 在這種情況下,它需要get訪問器的原因是什麼(當我用DoesNothing替換MustHaveHappened時發生了相同的編譯器錯誤)? 或者我在做一些根本性錯誤?
或者我應該不會失去太多的睡眠和do the right thing首先呢?
一個集合屬性通常是一種代碼味道。我有興趣知道爲什麼你首先要做到這一點。 –
@亞當:我給出的例子只是爲了展示我所看到的問題。實際上,我試圖在Winforms應用程序中創建我認爲是MVP體系結構的東西。視圖界面具有set-only屬性,以允許演示者將正在查看的對象傳遞給它。在視圖中,這個對象然後綁定到UI控件的數據。演示者響應屬性更改通知來更新模型。任何時候視圖和主持人都不需要獲取訪問器來查詢哪個對象被傳遞給視圖,所以我省略了它。我希望這是有道理的! – WalderFrey