環境
パッケージ
Frisby.js
https://www.npmjs.com/package/frisby
http://frisbyjs.com/
jasmine-node
https://www.npmjs.com/package/jasmine-node
http://jasmine.github.io/
環境構築
$ npm install frisby
$ npm install jasmine-node -g
テスト作成
記述
*spec.js
var frisby = require('frisby');
frisby.create('Title')
// 色々準備して…
.toss();
Frisby.jsメソッド
メソッド | |
---|---|
create(msg) | |
reset() | opts1.requestが対象 |
toss(retry) | |
waits(millis) | |
retry(count, backoff) | backoffは[ms]。 POSTの場合は無効。 opts1.retry,opts1.retry_backoff |
responseType(type) | ※用途不明 |
Global setup
メソッド | |
---|---|
globalSetup(opts) |
opts
{
request: {
headers: {},
inspectOnFailure: false,
json: false,
baseUri: '',
// 認証(既定値:undefined)
auth: {
user: '',
password: '',
sendImmediately: false
}
},
// timeout(既定値:undefined)
timeout: 5000,
// retry(既定値:undefined)
retry: 0,
retry_backoff: 1000
};
HTTP Requests
メソッド | |
---|---|
get([uri, params]) | |
patch([uri, data, params]) | |
post([uri, data, params]) | |
put([uri, data, params]) | |
delete([uri, data, params]) | |
head([uri, params]) | |
options([uri, params]) | |
auth(user, pass, digest) | HTTP Requestメソッドの後に設定。 opts1.auth |
timeout(t) |
※Multipartについては、httpbin_multipart_spec.jsを参照
Expectations
メソッド | |
---|---|
expectMaxResponseTime(milliseconds) | |
expectStatus(statusCode) | |
expectHeader(header, content) | |
expectHeaderContains(header, content) | |
expectHeaderToMatch(header, pattern) | |
expectBodyContains(content) | |
expectJSONTypes(path, jsonTest) | pathは省略可 |
expectJSON(path, jsonTest) | pathは省略可 |
expectJSONLength(expectedLength) | |
expectJSONSchema(path, jsonSchema) | jsonschemaを使用 |
not() |
jsonTestにはfunction(val)を指定可(Write Tests参照)
// jsonTestのサンプル
{
// 第1階層のvalueにはfunction(val)を指定可
place: function(val) { expect(val).toMatchOrBeNull("Oklahoma City, OK"); },
user: {
// ※function(val)を指定しても呼び出されない
location: function(val) { expect(val).toEqual("Oklahoma City, OK"); }
}
}
Helpers
メソッド | |
---|---|
after(cb) | 指定した順番でcbが呼び出される |
afterJSON(cb) | 指定した順番でcbが呼び出される |
exceptionHandler(fn) | expect2,after3での例外を捕捉 |
Headers
メソッド | |
---|---|
addHeader(header, content) | |
addHeaders(headers) | |
removeHeader(key) |
Inspectors
メソッド | |
---|---|
inspectRequest() | |
inspectResponse() | |
inspectStatus() | |
inspectHeaders() | |
inspectBody() | |
inspectJSON() |
Response setters
※Matcherテスト用
メソッド | |
---|---|
setResponseJSON(json) | |
setResponseBody(body) | |
setResponseHeaders(headers) | |
setResponseHeader(key, value) |
※戻り値は引数で設定した値
追加のMatcher
- toMatchOrBeNull()
- toMatchOrBeEmpty()
- toBeType()
- toBeTypeOrNull()
- toBeTypeOrUndefined()
- toContainJson()
- toContainJsonTypes()
version 0.8.5
テスト実施
実行
$ jasmine-node .
- ファイル名がspec.jsで終わるファイルが対象
- ファイル名昇順にすべてのspec.jsファイルを実行しテストを作成する(※逐次ではない)
- 作成したテストを順次実行する(toss()メソッドを呼び出した順)
- after()3で作成したテストは--verboseの一覧には表示されない