Вопрос

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

У меня есть класс, который является оберткой для 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);


}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top