gpt4 book ai didi

ember.js - 使用 guard 和 jasmine 进行 headless 测试 Ember 应用程序

转载 作者:行者123 更新时间:2023-12-02 06:06:15 24 4
gpt4 key购买 nike

我正在尝试使用 jasmine 和 guard 为我的 rails 3.2 应用程序测试基于 ember 的前端。为此,我使用 jasminerice 和guard-jasmine,phantomjs。设置非常简单,我可以运行一些示例规范。当谈到玩 ember 时,事情变得很疯狂。我有下面的规范来测试视频阅读器类。调用 loadVideo 方法时,应该将 videoHeight 和 videoWitdh 属性设置为对应的视频 DOM 元素的值。
当我在浏览器上运行 jasmine 时,测试通过了,但是当我使用 guard 和 phantomjs 运行它时,它失败了。我得到“期望未定义等于 640”。在 phantomjs 上运行测试时,似乎我的 DOM 元素没有考虑在内。

describe "VideoReader", ->
it "loads video from video DOM element", ->
videoDOM = Ember.$("<video width='640' height='480'><source src='/test.mp4'></source></video>")[0];

player = Topper.VideoReader.create();

player.loadVideo(videoDOM);

videoHeight = player.get('videoHeight');
videoWidth = player.get('videoWidth');

expect(videoHeight).toEqual(480);
expect(videoWidth).toEqual(640);

我的规范写对了吗?

最佳答案

您应该阅读有关 Testing in Ember.js 的博客文章.

我不知道你的Topper.VideoReader看起来像,但我猜你的问题与在 DOM 上操作某些东西有关,而不是让 Ember.js 有机会传播这些更改。在您的测试中,您应该将与绑定(bind)交互或正在操作 DOM 的调用包装在 Ember.run(function(){...}) 中。调用,如测试中所见,例如 child_views_test.js .

以下讨论的摘要:

  • 如果您要测试的代码与 DOM 交互,请将其包装在 Ember.run 中称呼。
  • 如果您想测试代码中触发的事件并且您无法控制它们何时触发,请使用测试框架中的异步测试功能,例如 QUnit 的 asyncTest
  • 关于ember.js - 使用 guard 和 jasmine 进行 headless 测试 Ember 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10048691/

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