gpt4 book ai didi

javascript - Mocha 测试不等待发布/订阅

转载 作者:行者123 更新时间:2023-11-28 20:18:56 25 4
gpt4 key购买 nike

堆栈

使用 Mocha + Velocity (0.5.3) 进行 Meteor 客户端集成测试。假设我安装了autopublish 包。

问题

如果从服务器插入 MongoDB 上的文档,客户端 mocha 测试将不会等待订阅同步,从而导致断言失败。

代码示例

服务器端 Accounts.onCreateUser 钩子(Hook):

Accounts.onCreateUser(function (options, user) {
Profiles.insert({
'userId': user._id,
'profileName': options.username
});

return user;
});

客户端 Mocha 测试:

beforeEach(function (done) {
Accounts.createUser({
'username' : 'cucumber',
'email' : 'cucumber@cucumber.com',
'password' : 'cucumber' //encrypted automatically
});

Meteor.loginWithPassword('cucumber@cucumber.com', 'cucumber');
Meteor.flush();
done();
});

describe("Profile", function () {

it("is created already when user sign up", function(){
chai.assert.equal(Profiles.find({}).count(), 1);
});

});

问题

我怎样才能让 Mocha 等待我的个人资料文档到达客户端,避免 Mocha 超时(从服务器创建)?

最佳答案

您可以被动地等待文档。 Mocha 有一个超时时间,所以如果没有创建文档,它会在一段时间后自动停止。

it("is created already when user signs up", function(done){
Tracker.autorun(function (computation) {
var doc = Profiles.findOne({userId: Meteor.userId()});
if (doc) {
computation.stop();
chai.assert.propertyVal(doc, 'profileName', 'cucumber');
done();
}
});
});

关于javascript - Mocha 测试不等待发布/订阅,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29967248/

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