Moq'ing интерфейс - PullRequest
       12

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

3 голосов
/ 03 октября 2008

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

У меня есть класс, который является оберткой для 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 будет возвращен без проблем.

Ответы [ 2 ]

8 голосов
/ 03 октября 2008

Вам необходимо использовать sbainst.Object, поскольку sbinst не является экземпляром ISbaObjects - это всего лишь фиктивная часть.

2 голосов
/ 04 октября 2008

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

[TestMethod]
public void Test_Customer_GetByID()
{
    var mock = new Mock<ILoader>();

    var sbainst = new Mock<ISbaObjects>();

    mock.Expect(x => x.GetSbaObjects("")).Returns(sbainst.Object);


}
...