3

画像/PNG を返す APIary 呼び出しの Dredd テストが失敗します。返された画像の内容ではなく、レスポンスとしてnullではない画像があることだけを確認することはできますか?

私のテストの出力は次のとおりです。

 [31mfail [39m: GET /imp-endpoint/api/V1/Resources?left_lower_lat=52.482780222078205&left_lower_lng=13.3154296875&right_upper_lng=13.359375&right_upper_lat=52.50953477032729&width=250&heigth=250 duration: 1176ms
 [31mfail [39m: body: Real and expected data does not match.

 [32mrequest [39m: 
body: 

headers: 
    accept: image/png
    User-Agent: Dredd/0.3.7 (Linux 3.5.0-52-generic; ia32)
    Authorization: Basic ZG1wOmRtcEAxMjM0

uri: /imp-endpoint/api/V1/Resources?left_lower_lat=52.482780222078205&left_lower_lng=13.3154296875&right_upper_lng=13.359375&right_upper_lat=52.50953477032729&width=250&heigth=250
method: GET


 [31mexpected [39m: 
headers: 
    content-type: image/png

body: 
�PNG

statusCode: 200


 [31mactual [39m: 
statusCode: 200
headers: 
    x-powered-by: Servlet/3.0 JSP/2.2 (GlassFish Server Open Source Edition 3.1.2.2 Java/Oracle Corporation/1.7)
    server: GlassFish Server Open Source Edition 3.1.2.2
    access-control-allow-origin: *
    access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
    content-type: image/png
    content-length: 26572
    date: Tue, 15 Jul 2014 09:00:26 GMT

body: 
�PNG


IHDR    � ?1g�IDATx^��
4

2 に答える 2

0

これは既知の制限です。Adam がリンク先のページで述べているように、バイナリ BLOB は現時点ではAPI ブループリントフォーマットでサポートされておらず、Dredd でのテストには使用できません。

私たち (Apiary) は実際にブループリントでバイナリ ファイルを適切にサポートする予定ですが、それが実現するまでは、API が検証に合格する方法を提供する必要があるのは事実です。

毛むくじゃらの回避策として、空の HTTP 本文と適切なContent-Lengthヘッダーを指定して、本文のテストを省略できます。

于 2014-08-22T16:00:57.260 に答える
0

回避策として、次を使用できます。

hooks.beforeValidation('User > Avatar > Get Mine', function (transaction) {
  transaction.expected.headers['content-length'] = 9999;
  transaction.real.body = '';
});

または、次のように、ブループリントでコンテンツの長さヘッダーを設定します。

+ Response 200 (image/png)

    + Headers

        Content-Length: 26572
于 2016-06-30T21:25:29.203 に答える