2017-09-05 13 views
0

こんにちは私はデータをURLとともに返すので、返されるオブジェクトにはurlとbodyが2つのプロパティとして返されます。複数のプロパティオブジェクトで約束されているようにチャイをチェックする

return new Promise(function(resolve,reject) 
    { 
     request(url, function (error, response, body) { 
     if(error) 
       reject(error); 
      else 
      { 
       if(response.statusCode ==200) 
        resolve({ "url" :url , "body" : body}); 
       else 
        reject("error while getting response from " + url); 
      } 
     }); 

    }); 

それは1つのプロパティのために働く

を約束してどのように私はChai-でこれをテストする必要があります。

他のプロパティを含めると、前のプロパティ内で検索します。

it("get data from correct url", function(){ 
    return expect (httphelper.getWebPageContent(config.WebUrl)) 
    .to.eventually.have.property('url') 
    .and.to.have.property('body') 
}); 

てAssertionError:期待される 'http://www.jsondiff.com/' プロパティ '身体' を持っている私が間違っているつもりです

?で、このプロパティを含めた結果を確実に続いて

const expected = { 
    url: "expected url", 
    body: "expected body" 
}; 

+0

これは、約束なしでは機能しますか? 「最終的に」なしで)普通のチャイで? – Bergi

+0

あなたの答えがあれば、それを受け入れてください。 – robertklep

答えて

1

が期待される特性を持つオブジェクトを作成し、あなたの問題に

return expect(httphelper.getWebPageContent(config.WebUrl)) 
.fulfilled.and.eventually.include(expected); 
0

まず、 bodyのチェックはオブジェクトurlで行われ、元のオブジェクトではなく(チェーンはjQueryチェーンのようなものです)、エラーメッセージに示すように、文字列http://www.jsondiff.com/bodyのプロパティを持ちません。

it('get data from correct url', async() => { 
    const res = await httphelper.getWebPageContent(config.WebUrl)); 

    expect(res).to.have.property('url'); 
    expect(res).to.have.property('body'); 
}); 

またはあなたがchai-as-promisedに固執する場合:

it('get data from correct url', async() => { 
    const res = httphelper.getWebPageContent(config.WebUrl)); 

    expect(res).to.be.fulfilled 
    .then(() => { 
    expect(res).to.have.property('url'); 
    expect(res).to.have.property('body'); 
    }); 
}); 

別の解決策は次のようになり一つの解決策は、返されたオブジェクトを取得し、二つの別々のチェックを行うことであろう、ということを考えると

オブジェクトのキーを取得し、次にmembers()関数を使用して、リストにプロパティが含まれているかどうかを確認します。

it('get data from correct url', async() => { 
    const res = await httphelper.getWebPageContent(config.WebUrl)); 

    expect(Object.keys(res)).to.have.members(['url', 'body']); 
}); 
関連する問題