Я использую фрейм Moq для насмешек. Я нашел проблему с переопределением Equals, которая не работает должным образом. Кажется, что в динамическом объекте должно быть переопределение, которое всегда возвращает false. Вот пример кода. Я использую версию Moq 4.2.1507.0118 от nuget.Сравнение Moq не соответствует
public class B
{
public override bool Equals(object obj)
{
return base.Equals(obj);
}
}
class Program
{
static void Main(string[] args)
{
var a = new Moq.Mock<B>().Object;
var b = a;
bool equalsOperator = a == b; //returns true
bool referenceEquals = object.ReferenceEquals(a, b); //returns true
bool equals_b = a.Equals(b); //returns false
bool equals_a = a.Equals(a); //returns false
}
}
Другое интересное, если точка останова находится на переопределении Equals, она никогда не попадает. Есть ли ошибка в структуре Moq, или есть что-то, что я делаю неправильно?
Приобретено. Если вы хотите «базу вызовов» только для этого члена, вы можете использовать 'm.Setup (x => x.Equals (It.IsAny