gpt4 book ai didi

node.js - 在被拒绝的 Promise 的 catch block 中 Mocha 测试失败

转载 作者:太空宇宙 更新时间:2023-11-03 22:07:18 25 4
gpt4 key购买 nike

使用axios进行http调用时,如何使catch block 中的promise拒绝测试失败?在 catch block 中添加期望、断言、should 表达式没有帮助。测试通过。

我使用 .\node_modules\.bin\mocha

运行
let chai = require('chai');
var expect = chai.expect;

var axios = require('axios')
var instance = axios.create({})

describe('test', () => {

context('test', () => {

it('should succeed', () => {
let url = 'url'
instance.get(url)
.then(function(response) {
expect(response.data).not.to.be.null
} )
.catch(function(err) {
console.error(err.data)
// should fail the test
})


})

})
})

最佳答案

如果您想验证我的建议,请将 url 值替换为有效的 url(例如: https://google.com )

您可以尝试多种方法:

1) 使用assert.fail()

const axios = require('axios');
const { assert, expect } = require('chai');

const instance = axios.create({})

describe('test', () => {
context('test', () => {
it('should succeed', () => {
let url = 'abc'
return instance.get(url)
.then((res) => {
expect(res.data).not.to.be.null;
})
.catch((err) => {
assert.fail('expected', 'actual', err);
});
});
});
});

2) 将done()与错误对象一起使用

const axios = require('axios');
const { expect } = require('chai');

const instance = axios.create({})

describe('test', () => {
context('test', () => {
it('should succeed', (done) => {
let url = 'abc'
instance.get(url)
.then((res) => {
expect(res.data).not.to.be.null;
done();
})
.catch((err) => {
done(err);
});
});
});
});

3) 只需抛出一个错误:)

const axios = require('axios');
const { expect } = require('chai');

const instance = axios.create({})

describe('test', () => {
context('test', () => {
it('should succeed', () => {
let url = 'abc'
return instance.get(url)
.then((res) => {
expect(res.data).not.to.be.null;
})
.catch((err) => {
throw err;
});
});
});
})

如果您想检查该方法是否完全失败并且您希望这样做,请这样做(它需要 chai-as-promised 包):

const axios = require('axios');
const chai = require('chai');

chai.use(require('chai-as-promised'));
const instance = axios.create({})

describe('test', () => {
context('test', () => {
it('should succeed', () => {
let url = 'abc'
return chai.expect(instance.get(url)).to.be.rejected;
});
});
});

关于node.js - 在被拒绝的 Promise 的 catch block 中 Mocha 测试失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52028479/

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