我試圖使用GWT
規格完全支持,但其official documentation的示例有點簡單。寫入給定/然後/當具有複雜對象的規格
在搜索SO,我發現這樣一個問題:
但它太舊(3年),我認爲在specs2
做GWT
的方式發生了變化。
到目前爲止,我有這個簡單的測試:
class FlowCollectorSpec extends Specification
with GWT
with StandardRegexStepParsers { def is = s2"""
Given a API route to get flows ${apiCaller.start}
Given an access to the API URL: http://192.168.56.102:8080/stats/flow/
When getting flow stats for a switch with id: 1
Then status code should be: 200 ${apiCaller.end}
"""
val anAPIUri = readAs(".*: (.*)$").and((s: String) => s)
val apiCaller =
Scenario("apiCaller").
given(aString).
given(anInt).
when(anAPIUri) {case url :: dpid :: _ => FlowCollector.getSwitchFlows(dpid)}.
andThen(anInt) {case expected :: actual :: _ => actual.code must_== expected}
}
我怎麼可以指定在鑑於聲明一個複雜的對象?是這樣的:
Given a Json response: ${jsonResponse}
可能是您的解決方案更好的結構。我會嘗試它。 「FlowCollector」對象和「FlowResult」的目的是什麼? – elbaulp
我添加了'FlowCollector'來使你的原始代碼編譯和'FlowResult'重現一個有'.code'方法的東西(再次使代碼編譯)。 – Eric
啊,好的,謝謝。你認爲什麼樣的結構化測試更好? – elbaulp