【发布时间】:2010-02-25 18:27:39
【问题描述】:
我有一个看起来有点像这样的测试(我从我的实际问题中简化了一点):
[Test]
public void Eat_calls_consumption_tracker_OnConsume()
{
var consumptionTrackerStub =
MockRepository.GenerateStub<IConsumptionTracker>();
var monkey = new Monkey(consumptionTrackerStub);
var banana = new Banana();
monkey.Eat(banana);
consumptionTrackerStub.AssertWasCalled(x => x.OnConsume(banana));
}
这可以正常工作,只是 Monkey 在吃完之后会处理掉 Banana。因此,香蕉对象不再处于可用状态。特别是,Banana.Equals 实现在调用Dispose 后无法工作,因为它使用了已释放的非托管资源。
不幸的是AssertWasCalled 会导致Banana.Equals 被调用,从而导致测试失败。解决此问题的最佳方法是什么?
【问题讨论】: