gpt4 book ai didi

javascript - 在 ember.js/QUnit 集成测试中,如何让 QUnit 在做出断言之前等待模型完成加载?

转载 作者:行者123 更新时间:2023-11-29 22:09:59 25 4
gpt4 key购买 nike

这是我的测试代码。

test("user login", function(){
visit("/sessions/new").then(function() {
fillIn('input[name=email]', 'test@email.com');
fillIn('input[type=password]', '1234');
click('button[type=submit]').then(function() {
equal(find('.dropdown-anchor', '#ember-testing').text(), 'test@email.com', "Menu should contain email 'test@email.com'");
});
});
});

单击提交会触发 session 的 HTTP 请求。成功完成后,它会更新应用程序菜单以包含已登录的用户电子邮件地址。

如何让 QUnit 在检查页面是否已更新之前等待 session HTTP 请求完成?

更新:已解决

原来我有一个自定义方法来创建位于 ember 数据约定之外的新 session 。在 ajax 请求中添加 Ember.run.begin();Ember.run.end(); 后,测试开始工作。有关更多详细信息,请参见此处:http://emberjs.com/api/classes/Ember.run.html

最佳答案

每个 ember-testing 助手都会返回一个 promise,当所有结果异步行为完成时,该 promise 就会实现。因此,要等待 session http 请求完成,请尝试以下操作:

test("user login", function(){
visit("/sessions/new").then(function() {
return fillIn('input[name=email]', 'test@email.com');
}).then(function() {
return fillIn('input[type=password]', '1234');
}).then(function() {
return click('button[type=submit]');
}).then(function() {
equal(find('.dropdown-anchor', '#ember-testing').text(), 'test@email.com', "Menu should contain email 'test@email.com'");
});
});

关于javascript - 在 ember.js/QUnit 集成测试中,如何让 QUnit 在做出断言之前等待模型完成加载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18582213/

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