与昨天的question相关。我实施了Mehrdad Afshari建议的solution,但这造成了另一个问题。 回顾:我有一个包含Type->IList<Type>
的词典的类,例如Cat->{cat1, cat2}, Zebra->{zebra1, zebra2}
其中Cat
和Zebra
是Animal
的子类。现在Mehrdad提出了以下方法来检索某种类型的所有动物:犀牛模拟存根从预期中返回不同的类型并打破我的单元测试
IList<T> GetAnimalsOfType<T>() where T : Animal {
return dictionary[typeof(T)].OfType<T>().ToList();
}
这有效,但打破了我的单元测试。原因是动物是一个抽象类,所以我使用Rhino Mocks来存根(使用animal = MockRepository.GenerateStub<Animal>();
)。我为这个类的单元测试试图创建一个新的动物,然后看看它是否包含在字典中。
zoo.AddAnimal(animal);
IList<Animal> animals= zoo.GetAnimalsOfType<Animal>();
Assert.That(animals[0], Is.EqualTo(animal));
不幸的是动物的由Rhino Mocks创建的类型是动物代理和我所要求的动物,它打破我的测试。有关如何纠正这种情况的任何建议?
更新:感谢所有的解决方案。
你可以发布你的测试代码吗? – 2010-01-27 09:42:02
就在那里。 – Johnny 2010-01-27 10:18:37