[英]Sinon unit testing for asynchronous call
我想测试一个加载一些数据的函数并检查列表是否为空。
我收到一些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)
}
我试过的代码是: import * as api1 from ../api/..api.js
describe('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)
});
});
这是单元测试解决方案:
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 |
-------------------|---------|----------|---------|---------|-------------------
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.