Будет ли вложенная функция вызываться в модульном тесте mocha после заглушки: AssertionError: ожидалось, что "некоторые данные" будут равны "заглушенной строке" - PullRequest
0 голосов
/ 21 февраля 2020

Я новичок в модульном тестировании с использованием mocha и sinon, просто чтобы узнать больше, я поставил функцию для возврата некоторой строки, в своем коде я вызываю эту функцию как внутреннюю функцию. Мой тест состоит в том, чтобы видеть, назначена ли заглушка возвращаемая строка переменной. Пожалуйста, посмотрите на фрагмент кода, чтобы понять больше

file.spe cjs

let sinon = require("sinon");
let filejs = require('./file.js');
let expect = require ("chai").expect;

it('should run only the outer function' ,function() {

// I try to stub my function here
sinon.stub(filejs,'test1').callsFake ((someArg) => {
  return "stubbed string";
});

// Now I will call my test outer function
   filejs.test();
  expect(filejs.param).to.equal("stubbed string");

})


    let param;
    module.exports = {
         test,
         test1
    }

    function test () {
      module.exports.param = test1();
    }

    function test1() {
       console.log("should not be called);
       let data = "some data";
       return data; 
    }

Поскольку я уже озвучил функцию test1 Я не ожидаю, что это будет вызвано, и возвращение из test1 назначено параметру, и, поскольку мы фальсифицировали функцию, возвращающую другую строку, я ожидаю, что для этой строки будет задана переменная param.

Но когда я запускаю тест, я вижу эту ошибку

AssertionError: ожидалось, что "некоторые данные" будут равны "короткой строке"

1 Ответ

1 голос
/ 21 февраля 2020

Попробуйте следующее редактирование ...

    function test () {
      module.exports.param = module.exports.test1();
    }

Для того, что вы пытаетесь сделать, чтобы иметь шанс на работу. Вам нужно sinon, чтобы изменить module.exports, а тестируемый код должен прочитать test1() из этого объекта. Может потребоваться, чтобы он был вложен глубже, чтобы изменить его ... Я не знаю. У меня были проблемы с использованием sinon.stub(require('./something'))

Я думаю, что я получил его в repl.it https://repl.it/repls/NegativeEnragedMainframe

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...