#javascript #mocha.js #chai #sinon
Вопрос:
Я нахожусь в процессе обучения тестированию с Мокко и Чаем, и у меня есть вопрос о том, чтобы отключить функцию. Я пытаюсь заглушить функцию, которая отображает массив и возвращает его в формате CSV. Однако мои тесты не проходят со следующим сообщением:
Ошибка ссылки: имя не определено
Что, как я понимаю, означает, что тест не может его найти, но я действительно не понимаю, почему, поскольку я чувствую, что объявил об этом? Любая помощь или указание мне в правильном направлении были бы полезны. Мой код и тест будут ниже:
export default ({ teamId, allApproverUserItemsForTeam = defaultAllApproverUserItemsForTeam, }) =gt; { const teamApprovers = allApproverUserItemsForTeam({ teamId }); const csvContent = teamApprovers.map(teamApprover =gt; `${teamApprover.firstName}, ${teamApprover.lastName}, ${teamApprover.emailAddress}`, ); const joinedApproversList = csvContent.join(); return joinedApproversList; };
describe('create_team_approvers_csv_test', () =gt; { describe('given a teamId for a team that has a list of approvers', () =gt; { const teamId = randoms.randomId(); const allApproverUserItemsForTeam = sinon.stub(); const approversForTeam = [ { id: 'fwwfw', emailAddress: 'joe@bloggs.com', firstName: 'Joe', lastName: 'Bloggs', title: 'Mr', isTeamProfile: false, version: 1, }, { id: 'wgerher6446', emailAddress: 'jane@doe.com', firstName: 'Jane', lastName: 'Doe', title: 'Mrs', isTeamProfile: false, version: 3, }, ]; allApproverUserItemsForTeam.withArgs({ teamId }).returns(approversForTeam); it('should create a list of approvers in a required CSV format', () =gt; { const expected = { firstName, lastName, emailAddress, }; const result = createTeamApproversCsv({ teamId }); expect(result).to.be.deep.equal(expected); }); }); });
Ответ №1:
Может быть, это опечатка. Вы не передали заглушенную allApproverUserItemsForTeam
функцию в createTeamApproversCsv
функцию.
Напр.
index.ts
:
//@ts-nocheck const defaultAllApproverUserItemsForTeam = ({ teamId }) =gt; { return []; }; export default ({ teamId, allApproverUserItemsForTeam = defaultAllApproverUserItemsForTeam }) =gt; { const teamApprovers = allApproverUserItemsForTeam({ teamId }); const csvContent = teamApprovers.map( (teamApprover) =gt; `${teamApprover.firstName}, ${teamApprover.lastName}, ${teamApprover.emailAddress}`, ); const joinedApproversList = csvContent.join(); return joinedApproversList; };
index.test.ts
:
import createTeamApproversCsv from '.'; import { expect } from 'chai'; import sinon from 'sinon'; describe('create_team_approvers_csv_test', () =gt; { describe('given a teamId for a team that has a list of approvers', () =gt; { const teamId = '123'; const allApproverUserItemsForTeam = sinon.stub(); const approversForTeam = [ { id: 'fwwfw', emailAddress: 'joe@bloggs.com', firstName: 'Joe', lastName: 'Bloggs', title: 'Mr', isTeamProfile: false, version: 1, }, { id: 'wgerher6446', emailAddress: 'jane@doe.com', firstName: 'Jane', lastName: 'Doe', title: 'Mrs', isTeamProfile: false, version: 3, }, ]; allApproverUserItemsForTeam.withArgs({ teamId }).returns(approversForTeam); it('should create a list of approvers in a required CSV format', () =gt; { const expected = ['Joe, Bloggs, joe@bloggs.com', 'Jane, Doe, jane@doe.com'].join(); const result = createTeamApproversCsv({ teamId, allApproverUserItemsForTeam }); expect(result).to.be.deep.equal(expected); }); }); });
результат теста:
create_team_approvers_csv_test given a teamId for a team that has a list of approvers ✓ should create a list of approvers in a required CSV format 1 passing (5ms) ----------|---------|----------|---------|---------|------------------- File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s ----------|---------|----------|---------|---------|------------------- All files | 87.5 | 0 | 66.67 | 87.5 | index.ts | 87.5 | 0 | 66.67 | 87.5 | 3 ----------|---------|----------|---------|---------|-------------------
Комментарии:
1. Спасибо @slideshowp2 Я прошел тесты сейчас с вашей помощью. Вы правы, я не передавал заглушенную функцию в функцию createTeamApproversCsv. Такая маленькая ошибка, спасибо, что указали на нее.