我想测试一个加载一些数据的函数,并检查列表是否为空。
我得到一些errors
,如下所示
网络获取错误
.map不是函数
存根被调用0次
我是javascript新手,将不胜感激。
loadmythings = async () => {
const list = await getmythings();
const finalvalues = []
list.map(item => values.push({ value: item.name }))
return value
}
api.js
export function getmythings(arg1, arg2) {
url = "/someurl"
returns fetch(url).then(response => response.json())
.then(json => json)
.catch(error => error)
}
我尝试过的代码是: 从../ api / .. api.js
导入*作为api1describe('testing', () => {
it('check list', async () => {
const apptest = new loadmythings_1()
const mockdata = [{ name: "my_name" }]
const stub = sinon.stub(api1, 'getmythings').returns(mockdata);
const finalList = await apptest.loadmythings();
sinon.assert.calledOnce(stub);
expect(finalList).to.equal(mockdata)
});
});
答案 0 :(得分:0)
这是单元测试解决方案:
loadmythings_1.ts
:
import * as api from './api';
export class loadmythings_1 {
loadmythings = async () => {
const list = await api.getmythings('arg1', 'arg2');
const finalvalues: any[] = [];
list.map((item) => finalvalues.push({ value: item.name }));
return finalvalues;
};
}
api.ts
:
export async function getmythings(arg1, arg2) {
const url = '/someurl';
return fetch(url)
.then((response) => response.json())
.then((json) => json)
.catch((error) => error);
}
loadmythings_1.test.ts
:
import * as api from './api';
import { loadmythings_1 } from './loadmythings_1';
import sinon from 'sinon';
import { expect } from 'chai';
describe('testing', () => {
it('check list', async () => {
const apptest = new loadmythings_1();
const mockdata = [{ name: 'my_name' }];
const stub = sinon.stub(api, 'getmythings').resolves(mockdata);
const finalList = await apptest.loadmythings();
sinon.assert.calledOnce(stub);
expect(finalList).to.deep.equal([{ value: 'my_name' }]);
});
});
具有覆盖率报告的单元测试结果:
testing
✓ check list
1 passing (21ms)
-------------------|---------|----------|---------|---------|-------------------
File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s
-------------------|---------|----------|---------|---------|-------------------
All files | 66.67 | 100 | 50 | 61.54 |
api.ts | 16.67 | 100 | 0 | 16.67 | 2-6
loadmythings_1.ts | 100 | 100 | 100 | 100 |
-------------------|---------|----------|---------|---------|-------------------