Пока я гуглю / читаю этот ответ, я подумал, что тоже спрошу здесь.
У меня есть класс, который является оболочкой для 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);
}