提问者:小点点

编写Ember. js异步测试助手和涉及异步操作的测试


我正在试图弄清楚如何正确编写一个执行自己的异步操作的Ember测试助手和本身涉及异步操作的测试,这些异步操作不一定包装在异步助手中。Ember站点上的示例在这里和这里都显示了仅通过调用预先存在的异步助手来构建的异步测试助手,而不是创建自己的异步条件的代码。

背景:我正在开发一个服务,该服务将有一个由Ember Ember数据前端的REST后端。我想编写一些与实际服务器对话的测试代码,以便我们能够确定Ember数据如何与服务器交互的细节。(在你跳上跳下讨论集成测试应该如何使用假数据以便它们可以在CI模式下运行之前,我们所做的是设置一个单独的Ember应用程序,其唯一的目的是通过Ember数据来调试服务器。因此,这些实际上是服务器测试,旨在确保服务器和Ember Data之间的兼容性,而不是对Ember应用程序本身的集成测试。)

因此,一些测试想要做的是:

  1. 对服务器执行AJAX查询以触发它设置某个数据集。(本质上,调用服务器内部的一些特殊测试代码来创建适当的先决条件。)
  2. 使用Ember数据API,以与真正的Ember应用程序相同的方式从服务器检索数据(或将数据写入服务器)。
  3. 确保我们得到了我们期望的东西,或者服务器中的数据之后看起来是正确的。

前两个操作显然都是异步的。第一个显然是一个很好的异步助手。第二个不一定是助手,因为每个调用都会不同,但显然测试本身需要等待DS.store返回的方法的promise。

最后,我知道的其他东西:

  1. 我理解Ember的测试助手如何工作的基本理论。(连锁promise等)
  2. 内置的异步助手(例如点击访问)都以返回app. testHelpers.awa()结束;
  3. 等待返回一个RSVP. Promise的实例,它会进行大量处理,以确保在解析之前或多或少地清理了东西,包括处理未完成的AJAX查询、测试服务员等。
  4. 如果需要,
  5. 等待可以与测试服务员交互。

因此,似乎如果我的异步助手做了与Ember相同的事情(即返回app. testHelpers.awa();),这对我的AJAX助手来说就足够了,因为等待将负责等待AJAX事务完成。然而,这并不需要回答更广泛的问题。

好的,现在真正的问题是:

>

  • 如果我想编写我自己的任意异步助手,我返回一个RSVP. Promise的实例就足够了吗?或者有必要实际使用wait()机制(可能还有测试waiters),因为wait机制的行为有一些额外的Ember依赖?

    Ember对中途涉及异步操作的测试有什么特殊要求吗?或者异步测试的QUnit机制是否足够?

    Ember是否有任何类型的QUnit异步东西的“包装”?(它在其一组测试调用背后“隐藏”QUnit的方式。)

    Ember Data与服务器的交互是否依赖于Ember运行循环?

    好的,我认为这对于一个问题来说已经足够了。:)我非常感谢任何愿意教育我的人。


  • 共1个答案

    匿名用户

    试图用我在这些问题上的经验来回答你的问题,这些经验可能是不完整的:

      null

    希望这有帮助