Frisby.jsでネストしたJSON ResponseのテストにCustom Matcherが使えない
REST APIのテストフレームワークであるFrisby.jsに関する質問。
レスポンスのJSONデータの値が「nullか文字列」である事をテストしたい場合、以下のような形でCustom Matcherが使える。
frisby.create('Test using a path as the paramater')
.get('http://localhost:3000/test')
.expectJSONTypes('member.*', {
"name": String,
"hobby": function(val) { expect(val).toBeTypeOrNull(String); }, // Custom Matcher
"rank": {
"name": string,
"point": Number
}
})
.toss()
しかし、JSONがネストしている場合、Custom Matcherがうまく使えない。
例えば"rank"の"name"がnullか文字列というテストをしようとするとエラーとなってしまう。
解決方法が分かれば教えて下さい。
frisby.create('Test using a path as the paramater')
.get('http://localhost:3000/test')
.expectJSONTypes('member.*', {
"name": String,
"hobby": String,
"rank": {
"name": function(val) { expect(val).toBeTypeOrNull(String); }, // エラーになる
"point": Number
}
})
.toss()
エラーメッセージは以下。
1) Frisby Test: Test using a path as the paramater
[ GET http://localhost:3000/test ]
Message:
Error: Expected 'string' to be type 'object' on key 'name'
Stacktrace:
Error: Expected 'string' to be type 'object' on key 'name'
at _jsonContainsTypes (/home/vagrant/frisby_test/node_modules/frisby/lib/frisby.js:1283:15)
at _jsonContainsTypes (/home/vagrant/frisby_test/node_modules/frisby/lib/frisby.js:1271:9)
at jasmine.Matchers.toContainJsonTypes (/home/vagrant/frisby_test/node_modules/frisby/lib/frisby.js:1156:12)
at /home/vagrant/frisby_test/node_modules/frisby/lib/frisby.js:573:22
at Array.forEach (native)
at Function._.each._.forEach (/home/vagrant/frisby_test/node_modules/frisby/node_modules/underscore/underscore.js:81:11)
at null.<anonymous> (/home/vagrant/frisby_test/node_modules/frisby/lib/frisby.js:572:9)
at null.<anonymous> (/home/vagrant/frisby_test/node_modules/frisby/lib/frisby.js:1043:43)