Проблемы с содержанием при использовании moq - PullRequest
0 голосов
/ 01 августа 2011

Я хочу проверить метод удаления. Метод удаления вызывается в mocked сервисе (не mocked с moq).

Сервис управляет списком объектов. Класс объектов является производным от базового класса, переопределяющего equals ().

 public override bool Equals(object obj) {
        if (obj == null || GetType() != obj.GetType()) {
            return false;
        }

        BaseClass testObj = (BaseClass)obj;
        return BusinessId.Equals(testObj.BusinessId);

    }

Когда я звоню

 serive.GetAll().Contains(objectInList);

Я получаю ложь.

Метод Equals в базовом классе не вызывается. Объекты в списке высмеиваются с moq.

 Mock<TypeOfObject> objectMock = new Mock<TypeOfObject>();
 objectMock.SetupGet(pf => pf.BusinessId).Returns(guid);
 return objectMock.Object;

Как мне настроить макет при вызове Equals-метода базового класса, а метод Contains возвращает true?

Заранее спасибо.

Ответы [ 2 ]

5 голосов
/ 01 августа 2011

Вы можете использовать макет для вызова метода Equals, установив для свойства Mock.CallBase значение true, например ::

.

Mock<TypeOfObject> objectMock = new Mock<TypeOfObject>();
objectMock.SetupGet(pf => pf.BusinessId).Returns(guid);
<strong>objectMock.CallBase = true;</strong>
return objectMock.Object;

0 голосов
/ 01 августа 2011

Сбой из-за вашей проверки GetType (). Передаваемый вами объект - Mock, а не BaseClass.

Попробуйте это:

public override bool Equals(object obj)
{
    if (obj != null && obj is BaseClass)
    {
        return BusinessId.Equals((obj as BaseClass).BusinessId);
    }
    else
    {
        return false;
    }
}
...