强制量角器等待种子数据加载

Posted

技术标签:

【中文标题】强制量角器等待种子数据加载【英文标题】:Force protractor to wait for seed data to load 【发布时间】:2016-04-25 12:49:06 【问题描述】:

我必须为我的测试加载一些种子数据。在测试开始运行之前,我很难确保种子数据已经完全加载。

在 beforeAll 块中,我调用了我为 API 编写的适配器,它清除所有数据,加载指定的种子数据文件,然后运行从量角器测试文件传入的回调。

我无法在回调中包含测试用例(这似乎与重构承诺类似的阻塞问题)或量角器无法识别它们。

谁能建议我在测试开始之前确保我的 API 已成功植入的方法?

谢谢!

【问题讨论】:

如果您在发生任何事情之前需要种子数据(启动任何测试),只需执行同步 xhr(而不是我假设的异步)。 【参考方案1】:

如果您在 Protractor 中使用 Jasmine 2.1 或更高版本,您可以在 beforeAll 中使用 done() 函数。

因此,如果您有一个名为 seedMyDataAsync() 的函数以回调函数作为参数,您可以执行以下简单操作:

beforeAll( function(done) 
    seedMyDataAsync(done);
);

done() 函数是在 Jasmine 2.0 中引入的,但直到 Jasmine 2.1 才可用于 beforeAll()

来自文档:

调用 beforeAll、afterAll、beforeEach、afterEach,它可以接受一个可选的单个参数,该参数应在异步工作完成时调用。

默认情况下,jasmine 将等待 5 秒以等待异步规范完成,然后再导致超时失败。如果在调用 done 之前超时过期,则当前规范将被标记为失败,并且套件执行将继续执行,就像调用 done 一样。

【讨论】:

以上是关于强制量角器等待种子数据加载的主要内容,如果未能解决你的问题,请参考以下文章

强制量角器的 onPrepare 等待异步 http 请求

量角器:单击按钮后如何等待页面完成?

页面加载后无法找到嵌套元素

需要专业建议,关于非角度应用的量角器中的显式等待

如何使用 Restkit 和 Core Data 存储对象和种子预加载数据

Selenium3自动化测试25强制等待&隐式等待