我刚开始使用angularjs并需要一些帮助。我正在使用ngStorage来处理AngularJS应用程序中的本地存储和量角器到e2e规范。
describe('Test', function() {
beforeEach(function () {
browser.driver.manage().window().setSize(1280, 1024)
browser.get('http://localhost:9000/#/test/first-test')
})
it("keeps the alternative marked", function () {
element(by.id('element')).click()
browser.refresh()
expect(element(by.id('element')).isSelected()).toBe(true)
})
})
结果:
1) Test keeps the alternative marked
Message:
Expected false to be true.
Stacktrace:
Error: Failed expectation
at [object Object].<anonymous> (path/spec/test_spec.js:12:52)
我认为browser.refresh()会清除本地存储。有一种方法可以保留它或其他方式来测试相同的东西吗?
感谢先进。
答案 0 :(得分:0)
我遇到了同样的问题,但我认为这与browser.refresh()
行为无关。 ngStorage
localStorage
实际更新内容时,似乎存在时间问题。
您可以在https://github.com/gsklee/ngStorage/blob/master/ngStorage.js#L205中看到ngStorage
在$ rootScope上更改后等待100毫秒实际保存到localStorage
。
我所看到的与此非常吻合:有时被解雇的物品在重装后仍然隐藏,有时却没有。如果我在刷新调用之前放置了一个明确的browser.waitForAngular()
,那么测试会更频繁地通过,但不会每次都通过。到目前为止,我发现的最可靠的方法是在通过browser.sleep(125);
更改localStorage
的每个操作后添加明确的ngStorage
。顺便说一句,这似乎是ngStorage
在其自己的测试中使用的方法。
值得注意的是onbeforeunload
中的ngStorage
处理程序应该处理这种特殊情况,但在调用browser.refresh()
时似乎没有这样做是正确的。