Вопрос
Пока я гуглял / читал этот ответ, я подумал, что я тоже спрошу здесь. Р>
У меня есть класс, который является оберткой для 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);
}
Ошибка компилятора гласит: Ошибка 1 Наилучший перегруженный метод сопоставления для 'Moq.Language.IReturns.Returns (Microsoft.BusinessSolutions.SmallBusinessAccounting.Loader.ISbaObjects)' имеет недопустимые аргументы
Что здесь происходит? Я ожидал, что макет ISbaObjects будет возвращен без проблем.
Решение
Вам необходимо использовать 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);
}