[英]Stubbing with sinon and testing with chai
我正在用 Mocha 和 Chai 學習測試,有一個關於 stubbing 函數的問題。 我正在嘗試存根一個映射數組並以 CSV 格式返回它的函數。 但是,我的測試失敗並顯示以下消息:
參考錯誤:名字未定義
我理解這意味着測試找不到它,但我真的不明白為什么,因為我覺得我已經聲明了它? 任何幫助或將我指向正確的方向都會有所幫助。 我的代碼和測試將在下面:
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);
});
});
});
也許這是一個錯字。 您沒有將存根allApproverUserItemsForTeam
函數傳遞給createTeamApproversCsv
函數。
例如
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);
});
});
});
測試結果:
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
----------|---------|----------|---------|---------|-------------------
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.