2017-09-21 84 views
0

我的消費者服務向提供者服務請求所有用戶的列表,但提供者使用任意有序列表(這很好)回答。消費者方面的契約執行看起來很好,但是在提供者網站上執行時,它說:Expected "user1" but got "user3" at $.items[0].userName例如。Pact.js - willRespondWith任意有序數組

這是相互作用的一個片段:

willRespondWith: { 
    status: 200, 
    headers: { "Content-Type": "application/json; charset=utf-8" }, 
    body: { 
     items: [ 
      { userName: "user1" }, 
      { userName: "user2" }, 
      { userName: "user3" }, 
     ], 
    }, 
}, 

有沒有辦法忽略返回的項目順序?

此外,我的摩卡測試似乎沒有影響比較。我也嘗試訂購這兩個陣列,但沒有任何幫助。 (互動和摩卡測試)如何連接?

it("Should generate a list of users in the system", async function() { 
      await userServiceClient.getUsers() 
       .then((users) => { 
        expect(users).to.include.members(EXPECTED_USERS_ARRAY); 
       }); 
}); 

非常感謝提前!

+0

請問比較名稱順序以確保它是正確的有什麼好處? –

+0

只需確保您要求的每個用戶都在系統中。這並不重要,因爲我們在這裏談論測試。我只是想知道是否有這樣的功能。然後它會比下面描述的方式更容易一些。 – shellmann

回答

1

此功能目前尚未實現,但是,我建議使用Pact.eachLike,它只能匹配類型。這些字段的實際值很少重要。

+0

謝謝貝絲。我已經在文檔中看到了並且以這種方式實現了,並且它工作正常。 – shellmann