gpt4 book ai didi

javascript - 如何用 sinon/chai 测试 axios 请求参数

转载 作者:行者123 更新时间:2023-12-01 15:18:25 25 4
gpt4 key购买 nike

我正在尝试使用 sinon/chai/mocha 测试 axios 调用的参数,以确认某些参数的存在(理想情况下它们是有效的日期)。

示例代码(在类 myclass 中)

fetch() {
axios.get('/test', { params: { start: '2018-01-01', end: '2018-01-30' } })
.then(...);
}

示例测试
describe('#testcase', () => {
let spy;
beforeEach(() => {
spy = sinon.spy(axios, "get");
});
afterEach(() => {
spy.restore();
});
it('test fetch', () => {
myclass.fetch();
expect(spy).to.have.been.calledWith('start', '2018-01-01');
expect(spy).to.have.been.calledWith('end', '2018-01-30');
});
});

但是,我尝试了许多选项,包括匹配器、 expect(axios.get) ... expect(..).satisfy , getCall(0).args和 axios-mock-adapter,但我不知道该怎么做。请问我错过了什么?

最佳答案

这是单元测试解决方案,您应该使用sinon.stub ,而不是 sinon.spy .使用sinon.spy将调用原始方法,这意味着 axios.get将发送一个真正的 HTTP 请求。

例如。index.ts :

import axios from "axios";

export class MyClass {
fetch() {
return axios.get("/test", {
params: { start: "2018-01-01", end: "2018-01-30" }
});
}
}
index.spec.ts :

import { MyClass } from "./";
import sinon from "sinon";
import axios from "axios";
import { expect } from "chai";

describe("MyClass", () => {
describe("#fetch", () => {
let stub;
beforeEach(() => {
stub = sinon.stub(axios, "get");
});
afterEach(() => {
stub.restore();
});
it("should send request with correct parameters", () => {
const myclass = new MyClass();
myclass.fetch();
expect(
stub.calledWith("/test", {
params: { start: "2018-01-01", end: "2018-01-30" }
})
).to.be.true;
});
});
});

覆盖率 100% 的单元测试结果:

 MyClass
#fetch
✓ should send request with correct parameters


1 passing (8ms)

---------------|----------|----------|----------|----------|-------------------|
File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s |
---------------|----------|----------|----------|----------|-------------------|
All files | 100 | 100 | 100 | 100 | |
index.spec.ts | 100 | 100 | 100 | 100 | |
index.ts | 100 | 100 | 100 | 100 | |
---------------|----------|----------|----------|----------|-------------------|

源代码: https://github.com/mrdulin/mocha-chai-sinon-codelab/tree/master/src/stackoverflow/50801243

关于javascript - 如何用 sinon/chai 测试 axios 请求参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50801243/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com