我们有一个复杂的多业务,在关闭时需要做一些相当复杂的会计,以实现“优雅”的关闭。
我正在尝试为此进行测试。问题是反应堆实际上是一个过程全球资源,关闭我的服务意味着试验反应堆也停止了,这当然会使它爆炸。
这是documented to be a no-no in trial,但我需要一些允许我编写测试的解决方法。我的第一个想法是使用mock.Mock,但这意味着我们并没有真正使用正在关闭的反应堆,这不会给我忠实于实际关机过程的行为。
我相信我需要的是一种将试验反应堆与我的待测服务反应堆分开的方法。在测试系统和被测系统之间共享可变资源肯定是一种反模式。
答案 0 :(得分:2)
关闭服务和停止反应堆之间存在差异。您应该能够使用myservice.stopService
测试大多数所需的行为。要测试实际启动关闭的代码,只需使用reactor.stop
模拟self.patch(reactor, 'stop', mock.Mock())
,然后断言它已被调用。如果您想要关联这两者,请让您的模拟stop
致电您的服务stopService
。