Moq'ing интерфейс

Пока я искал/читал этот ответ, я подумал, что я также попрошу здесь.

У меня есть класс, который является оболочкой для SDK. Класс принимает объект ILoader и использует объект ILoader для создания объекта ISBAObject, который передается в объект ISmallBusinessInstance. Я просто пытаюсь высмеять это поведение с помощью Moq.

[TestMethod]
 public void Test_Customer_GetByID()
 {
 var mock = new Mock<iloader>();
 var sbainst = new Mock<isbaobjects>();
 mock.Expect(x => x.GetSbaObjects("")).Returns(sbainst);
 }
</isbaobjects></iloader>

Ошибка компилятора: Ошибка 1 Наилучшее перегруженное соответствие метода для "Moq.Language.IReturns.Returns(Microsoft.BusinessSolutions.SmallBusinessAccounting.Loader.ISbaObjects)" содержит некоторые недопустимые аргументы

Что здесь происходит? Я ожидал, что Mock из ISbaObjects сможет быть возвращен без проблем.

2 ответа

Вам нужно использовать sbainst.Object, так как sbinst не является экземпляром ISbaObjects - это просто макет.


Обновлен, правильный код

[TestMethod]
public void Test_Customer_GetByID()
{
 var mock = new Mock<iloader>();
 var sbainst = new Mock<isbaobjects>();
 mock.Expect(x => x.GetSbaObjects("")).Returns(sbainst.Object);
}
</isbaobjects></iloader>

licensed under cc by-sa 3.0 with attribution.