如何在扭曲的情況下編寫協議的高級測試?扭曲的協議行爲的高級測試
我知道你可以使用StringTransport來測試底層的協議細節,它得到了一些原始數據和一些國家發生了變化,或者以某種方式作出迴應:
factory = SomeFactory()
protocol = factory.buildProtocol("ignored")
trans = proto_helpers.StringTransport("foo", 1234)
protocol.makeConnection(trans)
# ...
protocol.dataReceived("RAW PROTOCOL DATA\n")
self.assertEquals("Hello World!\n", self.transport.value())
但是,導線協議,現在不是那麼重要。它在不斷變化,我使用AMP無需考慮太多。我現在要測試的是高級行爲:
- 進行連接,確保協議通知GUI。
- 請求聯繫人列表,確保它發回我提供的聯繫人。
依此類推。例如:
serverApp = FakeApplication() # this contains application state
serverFactory = SomeFactory(serverApp)
testEndpoint = magic.TestEndpoint() # this class doesn't exist
testEndpoint.listen(factory)
clientApp = FakeApplication()
clientFactory = SomeFactory(clientApp)
testEndpoint.otherSide.connect(clientFactory)
self.assertEquals(serverApp.nConnections, 1)
self.assertEquals(clientApp.nConnections, 1)
assert clientApp.onNewConnection.was_called() # pseudo-code
缺少的是某種假端點或雙向傳輸來連接兩個協議對象。
任何提示如何測試協議行爲(而不是有線協議編碼)在扭曲?