Итак, у меня есть модель представления, которая использует экземпляр IAdapter, верно?И когда я устанавливаю свойство в модели представления, я вызываю некоторый метод в этом IAdapter.Это я могу легко moq & test, и я делаю.Вот метод испытания.
[TestMethod]
public void Setting_ExchangePrice_Calls_UpdateExcahngeCosts()
{
var currentItem = new InventoryItem();
bool adapterUpdateExchangeCostsWasCalled = false;
adapterMock.Setup(x => x.CurrentItem).Returns(currentItem);
adapterMock.Setup(x => x.UpdateExchangeCosts()).Callback(() => adapterUpdateExchangeCostsWasCalled = true);
vm.Adapter = adapterMock.Object;
vm.ExchangePrice = 4;
Assert.IsTrue(adapterUpdateExchangeCostsWasCalled);
}
Вот проблема, UpdateExchangeCosts () должен вызвать UpdateExchangePrices () - они оба будут жить в конкретном экземпляре адаптера, поэтому нет никаких причин делать его общедоступным, что означает, что нетнет никакой причины определять его в интерфейсе, потому что мы не определяем частные методы в интерфейсах.Оооочень ..... Я застрял в том, как я проверяю, чтобы убедиться, что вызов UpdateExchangeCosts () также вызывает UpdateExchangePrices?Я мог бы представить тест на основе состояния, но во многих случаях UpdateExchangePrices не будет ничего обновлять (по разным причинам), поэтому не будет никакого измененного состояния для тестирования.
Спасибо и хорошего дня!