У меня относительно простой абстрактный класс.Я еще больше упростил этот вопрос для этого вопроса.
public abstract class BaseFoo
{
public abstract string Identification { get; }
//some other abstract methods
public override bool Equals(object obj)
{
BaseFoo other = obj as BaseFoo;
if(other == null)
{
return false;
}
return this.Identification.Equals(other.Identification);
}
}
Я пытаюсь выяснить, как написать модульный тест, чтобы убедиться, что объект равен переопределению.Я попытался создать макет, но когда я приводил макет как объект и вызывал Equals, он не вызывает мой код в абстрактном классе.Это просто сразу возвращает ложь.То же самое, если я добавлю его в список объектов и вызову .Remove или .Contains в списке;все еще просто возвращает false, не нажимая код в моем абстрактном классе.
Я использую motest для mstest и rhino.
Для полноты, вот тест, который я ожидал бы работать, но нет:
[TestMethod]
public void BaseFoo_object_Equals_returns_true_for_Foos_with_same_Identification()
{
var id = "testId";
var foo1 = MockRepository.GenerateStub<BaseFoo>();
var foo2 = MockRepository.GenerateStub<BaseFoo>();
foo1.Stub(x => x.Identification).Return(id);
foo2.Stub(x => x.Identification).Return(id);
Assert.IsTrue(((object)foo1).Equals(foo2));
}