繁体   English   中英

异步调用的 Sinon 单元测试

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM