Как я могу заменить функцию функцией testdouble?

Я хотел бы проверить файл сtestdouble. Однако у меня есть метод, который я не знаю, как издеваться над файлом здесь. Если бы это был метод класса, я бы использовалMyClass.prototype.method = td.func()но здесь я попытался использоватьconst helperFunc = td.func('helperFunc')без везения. Я также пытался использоватьtd.replaceно выдало ошибку.

Можно ли заменить этоhelperFuncс поддельной функцией, т.е.td.func()?

Вот файл, который я хочу проверить:

MyClass.js

      const helperFunc = (data) => {
   return new Promise((resolve, reject) => {
        let result = // Work with 3rd party package
        resolve(result)
   })
}

class MyClass {
  method(data, callback) {
       return helperFunc(data).then(result => {
           return callback(result);
       }).catch(err => callback(null, err));
  }
}

module.exports = MyClass;

Вот мой тестовый файл

testfile.test.js

      const { expect } = require('chai');
const td = require('testdouble');

describe('my test', function () {
  let MyClass;
  let classInstance;
  let finalResult;
  before(function () {
    MyClass = require('../MyClass.js');
     
    const helperFunc = td.func('helperFunc');
    td.when(helperFunc(td.matchers.anything)).thenReturn('fakeData');
    classInstance = new MyClass();
    
    const testData = 'testdata';
    const callback = (returnData, err) => { 
       finalResult = returnData;
    }
    classInstance.method(testData, callback);
  })

  it('should return fake data', function() {
    expect(finalResult).to.equal('fakeData');
  })
  
})

0 ответов

Другие вопросы по тегам