Estoy en el proceso de aprender a probar con Mocha y Chai, y tengo una pregunta sobre la creación de una función. Estoy tratando de agregar una función que mapea una matriz y la devuelve en formato CSV. Sin embargo, mis pruebas están fallando con el siguiente mensaje:
ReferenceError: firstName no está definido
Lo que entiendo significa que la prueba no puede encontrarlo, pero realmente no entiendo por qué, ya que siento que lo he declarado. Cualquier ayuda o señalarme en la dirección correcta sería útil. Mi código y prueba estarán debajo:
export default ({ teamId, allApproverUserItemsForTeam = defaultAllApproverUserItemsForTeam, }) => { const teamApprovers = allApproverUserItemsForTeam({ teamId }); const csvContent = teamApprovers.map(teamApprover => `${teamApprover.firstName}, ${teamApprover.lastName}, ${teamApprover.emailAddress}`, ); const joinedApproversList = csvContent.join(); return joinedApproversList; }; describe('create_team_approvers_csv_test', () => { describe('given a teamId for a team that has a list of approvers', () => { 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', () => { const expected = { firstName, lastName, emailAddress, }; const result = createTeamApproversCsv({ teamId }); expect(result).to.be.deep.equal(expected); }); }); });Tal vez sea un error tipográfico. No pasó la función allApproverUserItemsForTeam agregada a la función createTeamApproversCsv .
P.ej
index.ts :
//@ts-nocheck const defaultAllApproverUserItemsForTeam = ({ teamId }) => { return []; }; export default ({ teamId, allApproverUserItemsForTeam = defaultAllApproverUserItemsForTeam }) => { const teamApprovers = allApproverUserItemsForTeam({ teamId }); const csvContent = teamApprovers.map( (teamApprover) => `${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', () => { describe('given a teamId for a team that has a list of approvers', () => { 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', () => { 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); }); }); });resultado de la prueba:
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 ----------|---------|----------|---------|---------|-------------------