我在扭曲中实现pubsub模式。 并且想知道如何在试验中测试pub只触发正确的潜艇,而不是其他潜水艇。
我可以测试是否调用了正确的潜艇:
def test_pubsub(self):
d1 = defer.Deferred()
d2 = defer.Deferred()
self.bus.sub("/foo", lambda ev: d1.callback(ev))
self.bus.sub("/foo/bar", lambda ev: d2.callback(ev))
self.bus.pub("/foo/bar", {})
return defer.gatherResults([d1, d2])
test_pubsub.timeout = 2
现在我想测试一下
self.bus.sub("/foo/bar/baz", callback_will_not_be_called)
UPD。我提出的唯一想法是:
self.bus.sub('/foo/bar/baz', lambda ev: d4.callback(ev))
d4.addCallback(lambda e: self.fail("should not happen"))
reactor.callLater(1.9, lambda: d4.cancel())
self.assertFailure(d4, defer.CancelledError)
答案 0 :(得分:1)
您不应该使用“真实”反应器进行此测试。试用版中的“超时”功能并非旨在对您的测试行为进行断言,而是允许挂起或错误的测试退出,以便套件的其余部分可以继续。相反,请遵循testing scheduling of timed calls within Twisted的文档化指南。