第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

開玩笑測試解決拒絕回調(diào)

開玩笑測試解決拒絕回調(diào)

SMILET 2021-04-30 08:40:30
我有這個函數(shù),它為api調(diào)用調(diào)用util函數(shù)。util函數(shù)根據(jù)api結(jié)果解析或拒絕。現(xiàn)在,我需要對具有以下結(jié)構(gòu)的回調(diào)函數(shù)進行單元測試。`theClassMethod : () => {    return utilMethod().then(    result => { this.functionOne() //Test this function is called },     error => { this.functionTwo() //Test this function is called }    )}`util方法返回一個promise,如下所示:utilFunc = (data :string) :Promise<ResultData[]> => {    return new Promise(async (resolve, reject) => {        try{            resolve(data)        }catch{            reject(error)        }    }) }https://codesandbox.io/s/vjnwy1zw75?fontsize=14我試過的模擬util方法來解決/拒絕。調(diào)用類方法并執(zhí)行斷言。它不起作用,并且測試始終以假陽性通過。我花了很多時間尋找類似的問題。這里的大多數(shù)問題是要測試代碼,例如:theClassMethod : () => { utilMethod.then().catch()}我要解決的問題是測試解決方案,然后在then塊中拒絕回調(diào)then(function1, function2)。必須測試function1內(nèi)部的代碼塊是否調(diào)用了某些預期的函數(shù)。
查看完整描述

1 回答

?
冉冉說

TA貢獻1877條經(jīng)驗 獲得超1個贊

您所描述的方法(模擬utilMethod解決/拒絕)是一種很好的方法。


這是一個簡單的工作示例,可幫助您入門:


注:我實現(xiàn)了functionOne作為一個類的方法,并functionTwo作為一個實例屬性,以顯示如何在這兩種類型的間諜功能:


util.js


export const utilMethod = async () => 'original';

code.js


import { utilMethod } from './util';


export class MyClass {

  functionOne() { }  // <= class method

  functionTwo = () => { }  // <= instance property

  theClassMethod() {

    return utilMethod().then(

      result => { this.functionOne() },

      error => { this.functionTwo() }

    );

  }

}

code.test.js


import { MyClass } from './code';

import * as util from './util';


test('theClassMethod', async () => {

  const mock = jest.spyOn(util, 'utilMethod');


  const instance = new MyClass();


  const functionOneSpy = jest.spyOn(MyClass.prototype, 'functionOne');  // <= class method

  const functionTwoSpy = jest.spyOn(instance, 'functionTwo');  // <= instance property


  mock.mockResolvedValue('mocked value');  // <= mock it to resolve

  await instance.theClassMethod();

  expect(functionOneSpy).toHaveBeenCalled();  // Success!


  mock.mockRejectedValue(new Error('something bad happened'));  // <= mock it to reject

  await instance.theClassMethod();

  expect(functionTwoSpy).toHaveBeenCalled();  // Success!

});


查看完整回答
反對 回復 2021-05-13
  • 1 回答
  • 0 關(guān)注
  • 153 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號