我正在使用 API Blueprint 和 Dredd 的组合来测试我的应用程序所依赖的 API。我在 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'
有谁知道为什么 Dredd 忽略了“fakeParameter”实际上并没有出现在响应正文中并且仍然允许测试通过的事实?