LoginSignup
3
4

More than 5 years have passed since last update.

Frisby.jsを使用したWeb APIテスト

Last updated at Posted at 2016-04-05

環境

パッケージ

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の一覧には表示されない

  1. globalSetup(opts) 

  2. すべてのexpectXXX() 

  3. after(cb),afterJSON(cb) 

3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4