Я не могу понять, как заставить Moq настроить метод .Equals на объекты. Следующее утверждение не удается:Moq - Setup .Equals метод для возврата false
var Song = new Mock<ISong>();
Song.Setup(x => x.Equals(Song.Object))
.Returns(false);
Assert.IsFalse(Song.Object.Equals(Song.Object));
Другими словами, Song.Object.Equals(Song.Object)
всегда возвращает истину.
Возможно ли издеваться над методом .Equals
с помощью Moq
? Что мне не хватает?
Вы выполняете установку для Song.Equals, а не Song.Object.Equals. Если вы протестируете Song.Equals (Song.Object), он должен вернуть false ... –
Ну, подождите, что? Я написал все свои тесты, используя Mock.Object как фактический макет. И он работал для всех других 30+ тестов. Зачем это терпеть неудачу для этого? EDIT: это действительно то, что они показывают в начале своей статьи: https://github.com/moq/moq4 – aspyct
Извините, что вы правы. Я сделал то же самое, что и вы, и получил тот же результат. Если я добавлю «bool Equals (object obj)» в мой интерфейс ISong, тогда он работает ... что имеет смысл для меня ... Я могу разработать ответ, если вы хотите, чтобы я это сделал. –