我正在尝试使用jasmine和guard来测试我的rails 3.2应用程序的基于余烬的前端。为此,我使用jasminerice和guard-jasmine,phantomjs。设置非常简单,我可以运行一些示例规格。当谈到使用余烬时,事情就变得疯狂了。我有下面的规范测试视频阅读器类。在调用loadVideo方法时,它应该使用相应视频DOM元素的值设置videoHeight和videoWitdh属性。 当我在我的浏览器上运行jasmine时测试通过,但是当我用guard和phantomjs运行它时,它失败了。我得到“Expect undefined等于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);
我的规范是否写得正确?
答案 0 :(得分:3)
您应该阅读有关Testing in Ember.js。
的博客文章我不知道你的Topper.VideoReader
是什么样的,但我猜你的问题与在DOM上操作某些东西有关,而不是让Ember.js有机会传播这些变化。在测试中,您应该包含与绑定交互的调用或在Ember.run(function(){...})
调用中操作DOM,如测试中所示,例如child_views_test.js。
以下讨论摘要:
Ember.run
调用中。