0

我们有一个复杂的多服务,需要在关闭时进行一些相当复杂的计算,以实现“优雅”关闭。

我正在尝试为此编写测试。问题是反应堆实际上是一个进程全局资源,关闭我的服务意味着试验的反应堆也停止了,这(当然)使它爆炸。

这被记录为试验中的禁忌,但我需要某种解决方法来允许我编写测试。我的第一个想法是使用mock.Mock,但这意味着我们并没有真正使用正在关闭的反应器,这不会给我带来忠实于实际关闭过程的行为。

我相信我需要一种将试验的反应堆与我的被测服务的反应堆分开的方法。在测试系统和被测系统之间共享可变资源肯定是一种反模式。

4

1 回答 1

2

关闭服务和停止反应堆是有区别的。您应该能够使用myservice.stopService. 要测试实际启动关闭的代码,只需使用 模拟reactor.stopself.patch(reactor, 'stop', mock.Mock())然后断言它已被调用。如果你想将两者联系起来,那么让你的模拟stop调用你的服务的stopService.

于 2013-09-01T13:30:21.287 回答