gpt4 book ai didi

node.js - 测试期间的 Mocha beforeEach 和 afterEach

转载 作者:IT老高 更新时间:2023-10-28 23:09:17 27 4
gpt4 key购买 nike

我一直在尝试使用 mocha 测试我的测试服务器。这是我使用的以下代码,与另一篇类似帖子中的代码几乎相同。

beforeEach(function(done) {
// Setup
console.log('test before function');
ws.on('open', function() {
console.log('worked...');
done();
});
ws.on('close', function() {
console.log('disconnected...');
});
});

afterEach(function(done) {
// Cleanup
if(readyState) {
console.log('disconnecting...');
ws.close();
} else {
// There will not be a connection unless you have done() in beforeEach, socket.on('connect'...)
console.log('no connection to break...');
}
done();
});

describe('WebSocket test', function() {
//assert.equal(response.result, null, 'Successful Authentification');
});

问题在于,当我执行此草稿时,在命令提示符下看不到任何预期会看到的 console.log。你能解释一下我做错了什么吗?

最佳答案

Georgi 是正确的,您需要调用 it 来指定测试,但如果您不这样做,则不需要在文件中包含顶级 describe想要。你可以用一堆 it 调用替换你的单个 describe:

it("first", function () {
// Whatever test.
});

it("second", function () {
// Whatever other test.
});

如果您的测试套件很小且仅由一个文件组成,则此方法非常有效。

如果您的测试套件更大或分布在多个文件中,我会非常强烈建议您将 beforeEachafterEach 与您的itdescribe 中,除非您绝对肯定套件中的每个测试都需要 beforeEachafterEach。 (我用 Mocha 编写了多个测试套件,而且我从来没有需要为每个测试运行的 beforeEachafterEach。)类似:

describe('WebSocket test', function() {
beforeEach(function(done) {
// ...
});

afterEach(function(done) {
// ...
});

it('response should be null', function() {
assert.equal(response.result, null, 'Successful Authentification');
});
});

如果您没有像这样将 beforeEachafterEach 放入 describe 中,那么假设您有一个文件来测试 Web 套接字和另一个文件来测试一些数据库操作。包含数据库操作测试的文件中的测试会在它们之前和之后执行您的 beforeEachafterEach。将 beforeEachafterEach 放在 describe 中,如上所示,将确保它们仅针对您的 Web 套接字测试执行。

关于node.js - 测试期间的 Mocha beforeEach 和 afterEach,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22762301/

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