我想測驗將 .save 保存到 2 個表中的函式,但在第二個查詢中我必須使用第一個查詢中的 id 這是我的服務
async createBoth(createInput: CreateInput): Promise<SomeThing> {
const data = await this.dataRepository.create(createInput);
const data2 = {
dataId: data.id,
someInfo: 'test'
};
await this.data2Repository.create2(wallet);
}
正如你在我的函式中看到的,我有 2 個查詢,首先我保存到 dataReposition ,然后我通過使用保存到 data2Repository data.id
這是我的測驗
describe('create Boath', () => {
it('should be createBoth', async () => {
await service.createBoth(mockInput);
});
});
錯誤出現
Can't createBoth [ because I think It need to mock data.id ]
uj5u.com熱心網友回復:
我認為,您對單元測驗有點錯誤。Ofc,每個人對如何做都有自己的偏好......但無論如何。
單元測驗的基本形式是測驗一個特定方法的邏輯,而不是它呼叫的方法(在這方面,撰寫可測驗的代碼也很重要)。
因此,在您的情況下,您想要模擬的是被參考為 this.dataRepository 和 this.data2Repository 的 2 個物件。這些物件必須模擬 create() 方法。
這將允許您控制從第一次呼叫回傳哪些資料并驗證兩次呼叫的呼叫引數是什么。
您的測驗應該進行上述驗證,否則除非呼叫嚴重失敗,否則它實際上并沒有進行太多測驗。
說到這一點,在您的代碼中,您不要在宣告后使用 data2 常量。您確定需要傳遞給第二次呼叫的是“錢包”變數而不是 data2?
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/331400.html
標籤:javascript 单元测试 嵌套
