Функциональный тест-заглушка с sinon/nodejs

У меня проблема с наброском функции с помощью sinon.

Проблема в том, чтобы вернуть результат или выдать ошибку в функции другой функции.

Как показано ниже:

сервис.js

async function functionA() {
  var resultB = functionB();
}

function functionB() {
  return "FuncB";
}

module.exports = {
  functionA,
  functionB
}

сервис.test.js

const { assert } = require("chai");
const sinon = require("sinon");
const service = require("./service");

it('Should return error.', async function() {
  var stub = sinon.stub(service, 'functionB').returns('functionC');
  var functionTotest = service.functionA();

  assert(stub.calledOn(functionTotest));
});

Функция не имитирует ошибку или возврат, который я установил.

Стаб не работает и входит в функцию.

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
52
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вот решение модульного теста:

service.js:

async function functionA() {
  var resultB = exports.functionB();
  return resultB;
}

function functionB() {
  return 'FuncB';
}

exports.functionA = functionA;
exports.functionB = functionB;

service.test.js:

const { assert, expect } = require('chai');
const sinon = require('sinon');
const service = require('./service');

it('Should return error.', async function() {
  var stub = sinon.stub(service, 'functionB').returns('functionC');
  var actual = await service.functionA();
  expect(actual).to.be.equal('functionC');
  expect(stub.calledOnce).to.be.true;
});

Результат модульного теста с отчетом о покрытии:

  ✓ Should return error.

  1 passing (9ms)

-----------------|----------|----------|----------|----------|-------------------|
File             |  % Stmts | % Branch |  % Funcs |  % Lines | Uncovered Line #s |
-----------------|----------|----------|----------|----------|-------------------|
All files        |    92.31 |      100 |    66.67 |    92.31 |                   |
 service.js      |       80 |      100 |       50 |       80 |                 7 |
 service.test.js |      100 |      100 |      100 |      100 |                   |
-----------------|----------|----------|----------|----------|-------------------|

Исходный код: https://github.com/mrdulin/mocha-chai-sinon-codelab/tree/master/src/stackoverflow/56759906

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