在Ember.js 1.0.rc1上使用Konacha进行集成测试时遇到问题。我的问题是,所有测试都是在呈现任何视图之前运行的。有没有一种方法可以在不需要手动超时的情况下知道所有内容都被渲染了?
等级库帮助器:
//=require sinon
//=require jquery
//=require jquery_ujs
//=require twitter/bootstrap
//=require handlebars
//=require ember
//=require ember-data
//=require_self
//=require icarium
window.lookupController = (name) ->
Icarium.__container__.lookup('controller:' + name)
window.currentPath = ->
lookupController('application').get('currentPath')
Ember.testing = true
Ember.run ->
window.Icarium = Ember.Application.create()测试:
//=require spec_helper
describe "user login", ->
before (done) ->
Ember.run ->
Icarium.set 'ready', ->
done()
Icarium.initialize()
afterEach ->
Ember.run ->
Icarium.reset()
it "routes to login", ->
Ember.run ->
currentPath().should.eq "login"
it "renders the login form", ->
$('input[type=password]').should.exist发布于 2013-03-28 19:07:27
也许将Konacha的重置函数设置为noop会起到作用:
Konacha.reset = ->默认情况下,它会在每次测试前清除body elmenet。你可以在Jo Liss的幻灯片中找到这一点和其他有用的技巧:http://www.slideshare.net/jo_liss/testing-ember-apps
发布于 2013-03-28 19:23:38
我有一个使用Konacha的example app和一个最新的Ember版本。我发现,将应用程序的就绪推迟到每次测试运行,然后提前准备并等待新的应用程序就绪承诺解决是很有帮助的。下面是来自test_helper.js的代码
//= require konacha_config
//= require sinon
//= require application
// Prevent the router from manipulating the browser's URL.
App.Router.reopen({location: 'none'});
//**** Global before / after ***
// Sinon fake server
var server;
// Stub out Konacha.reset()
Konacha.reset = Ember.K;
beforeEach(function(done) {
// Fake XHR
server = sinon.fakeServer.create();
// Prevent automatic scheduling of runloops. For tests, we
// want to have complete control of runloops.
Ember.testing = true;
Ember.run(function() {
// Advance App readiness, which was deferred when the app
// was created.
//
// This needs to be done here, after each iframe has been setup,
// instead of in a global `before`.
App.advanceReadiness();
// When App readiness promise resolves, setup is complete
App.then(function() {
done();
});
});
});
afterEach(function() {
// Reset App
Ember.run(function() {
App.reset();
});
// Restore XHR
server.restore();
});https://stackoverflow.com/questions/15679065
复制相似问题