composer require --dev cloudpack/rorschach./vendor/bin/rorschach inspect普通にテストした場合、 finished. という味気ないメッセージが流れます。
少しでもあなたとの距離を縮める為に最高のオプションを用意いたしました。
--saikou か -s をつけて是非お試しください。
Yaml内に、 {{ }} ブラケットで囲んだ変数を記述することで、外部から値を注入することができる。
注入する方法は2つ
--bindを使ってJSONにて指定する。(複数指定可能)
--bind='{"env": "prod"}'--bind='{"env": "prod"}' --bind='{"api-token": "YOURTOKEN"}'- pre-requestsのbinding構文を使う
bind:
api-token: response.data.param上記のようにすることで、以下のレスポンスの SOME PARAMETER が api-token としてbindされる
{
"response": {
"data": {
"param": "SOME PARAMETER"
}
}
}デフォルトでは、プロジェクトディレクトリの test*.yml すべてを対象とする。
特定ファイル指定をしたい場合はコマンドライン引数で指定することが可能。
--file='test/test-api.yml'- pre-requestで実行したAPIのレスポンスをフックして任意のコードを実行し、レスポンスを返すようにできる
- venderディレクトリやtestsディレクトリと同階層に
pluginsという名前でディレクトリを作成し、その中にphpファイルを設置する- 実行時にpluginsディレクトリ内のphpファイルを読み込む為、関数を定義しyamlでは
after-functionというキーを設定することでフックすることができる - 呼び出された関数は Response Object を引数に受け取るので、それを元に関数を作成
- e.g.
- 実行時にpluginsディレクトリ内のphpファイルを読み込む為、関数を定義しyamlでは
$ tree .
.
├── README.md
├── composer.json
├── composer.lock
├── plugins
│ └── test_function.php
├── tests
│ ├── test-beta.yml
....
$ cat plugins/test_function.php
<?php
/**
* toTest()
* @Param $Response
*/
function toTest($Response) {
return json_decode((string)$Response->getBody(), true);
}
$ cat ./tests/test-beta.yml
....
pre-request:
-
url: /login
method: POST
option:
headers:
...
json:
...
bind:
api-token: test
after-function: toTest
...
- この機能を利用することにより、次のようなことが可能になる
- レスポンスが暗号化されているため復号化したり...
- 別の固定値に書き換えたり...
- etc ...
base: https://{{ env }}.example.com
option:
headers:
x-api-key: YOUR-SECRET-KEY
ContentType: application/json
allow_redirects: false
pre-request:
-
url: /auth
method: GET
option:
headers:
x-header: HEADER
body:
name: shinichi
password: p@ssw0rd
bind:
api-token: response.data.param
request:
-
url: /users/1
method: GET
option:
headers:
api-token: {{ api-token }}
body:
exclude: false
expect:
code: 200
has:
- id
- user.name
- user.address..tel01
type:
id: integer|nullable
name: string
value:
id: 123
name: shinichi
-
url: /items
method: GET
expect:
code: 302
redirect: https://prod.example.com