アプリケーションが依存している API をテストするために、API ブループリントと Dredd を組み合わせて使用しています。API ブループリントで属性を使用して、応答の本文の構造を定義しています。
APIの応答に欠落していることがわかっている偽の「必須」パラメーターを意図的に定義したにもかかわらず、テストは常にパスするため、明らかに何かが欠けています。Dredd は、型とその中のパラメーターではなく、応答本文 (配列)の型をテストしているだけのようです。
私の API ブループリント ファイル:
FORMAT: 1A
HOST: http://somehost.net
# API Title
## Endpoints [GET /endpoint/{date}]
+ Parameters
+ date: `2016-09-01` (string, required) - Date
+ Response 200 (application/json; charset=utf-8)
+ Attributes (array[Data])
## Data Structures
### Data
- realParameter: 2432432 (number)
- realParameter2: `some string` (string, required)
- realParameter3: `Something else` (string, required)
- realParameter4: 1 (number, required)
- fakeParam: 1 (number, required)
応答本文:
[
{
"realParameter": 31,
"realParameter2": "some value",
"realParameter3": "another value",
"realParameter4": 8908
},
{
"realParameter": 54,
"realParameter2": "something here",
"realParameter3": "and here too",
"realParameter4": 6589
}
]
そして、私の Dredd 設定ファイル:
reporter: apiary
custom:
apiaryApiKey: somekey
apiaryApiName: somename
dry-run: null
hookfiles: null
language: nodejs
sandbox: false
server: null
server-wait: 3
init: false
names: false
only: []
output: []
header: []
sorted: false
user: null
inline-errors: false
details: false
method: []
color: true
level: info
timestamp: false
silent: false
path: []
blueprint: myApiBlueprintFile.apib
endpoint: 'http://ahost.com'
「fakeParameter」が実際には応答本文に表示されず、テストに合格できるという事実を Dredd が無視する理由を知っている人はいますか?