Javascript 如何模拟构造函数的链接函数的返回值?
我需要使用jest模拟csvJsonArray的值Javascript 如何模拟构造函数的链接函数的返回值?,javascript,node.js,unit-testing,jestjs,mocking,Javascript,Node.js,Unit Testing,Jestjs,Mocking,我需要使用jest模拟csvJsonArray的值 const csv = require('csvtojson') const csvJsonArray = await csv().fromFile(csvFilePath) 我试过以下方法 jest.mock('csvtojson', () => jest.fn()) const fromFile = jest.fn().mockReturnValue(commTemplateCsvJsonArray) csv.mockImplem
const csv = require('csvtojson')
const csvJsonArray = await csv().fromFile(csvFilePath)
我试过以下方法
jest.mock('csvtojson', () => jest.fn())
const fromFile = jest.fn().mockReturnValue(commTemplateCsvJsonArray)
csv.mockImplementation(() => ({fromFile}))
但这里csvJsonArray值为null
如何模拟构造函数的链接函数的返回值?由于
csv().fromFile()
方法的返回值是一个promise
,因此应该使用模拟解析值
例如
main.js
:
const csv=require('csvtojson');
异步函数main(){
const csvFilePath='./test.csv';
const csvJsonArray=await csv().fromFile(csvFilePath);
返回csvJsonArray;
}
module.exports={main};
main.test.js
:
const{main}=require('./main');
const csv=require('csvtojson');
开玩笑的模仿(“csvtojson”);
描述('65620607',()=>{
它('should pass',async()=>{
常量commTemplateCsvJsonArray=[1,2,3];
const fromFile=jest.fn().mockResolvedValue(commTemplateCsvJsonArray);
csv.mockImplementation(()=>({fromFile}));
常量实际值=等待主();
期望值(实际值).toEqual([1,2,3]);
期望(csv)。toBeCalledTimes(1);
expect(fromFile).toBeCalledWith('./test.csv');
});
});
单元测试结果:
PASS examples/65620607/main.test.js
65620607
✓ should pass (4 ms)
----------|---------|----------|---------|---------|-------------------
File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s
----------|---------|----------|---------|---------|-------------------
All files | 100 | 100 | 100 | 100 |
main.js | 100 | 100 | 100 | 100 |
----------|---------|----------|---------|---------|-------------------
Test Suites: 1 passed, 1 total
Tests: 1 passed, 1 total
Snapshots: 0 total
Time: 5.705 s