Javascript 延迟升压量角器
我正在尝试为我们的angular应用程序设置端到端测试,但遇到了一些障碍 一个是自举。我们正在使用这个库:引导我们的应用程序。这个库允许我们进行http调用,然后将调用结果注入到我们的应用程序中(如angularJavascript 延迟升压量角器,javascript,angularjs,protractor,Javascript,Angularjs,Protractor,我正在尝试为我们的angular应用程序设置端到端测试,但遇到了一些障碍 一个是自举。我们正在使用这个库:引导我们的应用程序。这个库允许我们进行http调用,然后将调用结果注入到我们的应用程序中(如angularvalue())。然后,它调用bootstrap函数以实际使用angular引导应用程序。我希望测试在这个增强完成后运行 这就是我到目前为止所做的 describe('navigation should', function () { beforeEach(function ()
value()
)。然后,它调用bootstrap
函数以实际使用angular引导应用程序。我希望测试在这个增强完成后运行
这就是我到目前为止所做的
describe('navigation should', function () {
beforeEach(function () {
// load homepage
browser.get('/');
}, 10000);
it('show side navigation', function () {
browser.wait(function () {
var deferred = protractor.promise.defer();
element(by.css('body.deferred-bootstrap-loading')).isPresent()
.then(function (isPresent) {
deferred.fulfill(!isPresent);
});
return deferred.promise;
});
});
});
库方便地将延迟引导加载
类放在主体上
。我正在等待,直到这是删除
问题是,有时我在等待量角器与页面同步时收到错误错误:“[ng:test]找不到元素参数可获取性的注入器\nhttp://errors.angularjs.org/1.4.8/ng/test“
它似乎比它(测试)通过更频繁地产生这种错误
我不明白这里有什么问题?量角器在有机会运行之前运行吗
我是否必须以浏览器的身份在回调中运行所有测试。等待返回承诺
另外,我希望在每次测试中都运行此代码(等待引导完成)。组织此操作的最佳方法是什么?我将尝试关闭同步,直到满足预期条件:
另外,我希望在每次测试中都运行此代码(等待引导完成)。最好的组织方式是什么
请参阅:
当您使用手动/半手动引导机制时,我不会使用browser.get()
,因为这会等待Angular加载。改为使用browser.driver.get()
并在延迟引导加载
类上添加等待。从角度看
因此,类似于以下内容的内容应该可以起到作用:
describe('navigation should', function () {
beforeEach(function (done) {
// load homepage
browser.driver.get('/');
browser.driver.wait(function () {
return browser.driver.isElementPresent(by.class('body.deferred-bootstrap-loading'))
.then(function (el) {
return el === false;
});
}).then(done);
}, 10000);
it('show side navigation', function () {
// normal test here
});
});
我还没有测试过上面的内容,但你应该了解情况。
通过使beforeach async并等待类从主体标记中消失,当您运行it
块时,您可以期望一切都在运行。先生,您应该得到一个拥抱
describe('navigation should', function () {
beforeEach(function (done) {
// load homepage
browser.driver.get('/');
browser.driver.wait(function () {
return browser.driver.isElementPresent(by.class('body.deferred-bootstrap-loading'))
.then(function (el) {
return el === false;
});
}).then(done);
}, 10000);
it('show side navigation', function () {
// normal test here
});
});