私はspockを使い始めました。私は1つの機能を持っています。ここでjava関数はhttp呼び出しを行います。機能ごとに、http呼び出しで使用されるURIには "loc"パラメータが含まれていなければなりません。Spock:URIのクエリパラメータの数を確認してください
私はSpockテストケースを書いています。私はスニペットの下に書いた。上記のスニペットから
def "prepareURI"() {
given: "Search Object"
URI uri = new URI();
when:
uri = handler.prepareURI(properties) // it will return URI like http://example.com?query=abc&loc=US
then:
with(uri)
{
def map = uri.getQuery().split('&').inject([:]) {map, kv-> def (key, value) = kv.split('=').toList(); map[key] = value != null ? URLDecoder.decode(value) : null; map }
assert map.loc != null
}
}
は、私の2つのテストは、それがあるべき
- のように渡しました
- が存在することは、私はLOC」のカウント数を確認したい
nullにすべきではありません"クエリパラメータ。それはちょうど1回通過する必要があります。上記のようなマップを使って、 "loc"パラメータを2回渡すと、マップは古い値を2番目の値で上書きします。
は、いずれかのリストとしてクエリパラメータにアクセスする方法を、知っていて、リストに私が「LOC」事前に
おかげで始まる文字列の数を検索したいです。
def uri = new URI('http://example.com?query=abc&loc=US')
def parsed = uri.query.tokenize('&').collect { it.tokenize('=') }
println "parsed to list: $parsed"
println "count of 'loc' params: " + parsed.count { it.first() == 'loc' }
println "count of 'bob' params: " + parsed.count { it.first() == 'bob' }
println "count of params with value 'abc': " + parsed.count { it.last() == 'abc' }
プリント:
ありがとう:
たテストケースは、次のようになります!私はその考えを得た。ところで、URI apiは重複するクエリパラメータを許可しません。同じクエリパラメータを配置しようとすると、最新のクエリパラメータが使用されます。 –