首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Emberjs与konacha的集成测试

Emberjs与konacha的集成测试
EN

Stack Overflow用户
提问于 2013-03-28 18:11:40
回答 2查看 840关注 0票数 1

在Ember.js 1.0.rc1上使用Konacha进行集成测试时遇到问题。我的问题是,所有测试都是在呈现任何视图之前运行的。有没有一种方法可以在不需要手动超时的情况下知道所有内容都被渲染了?

等级库帮助器:

代码语言:javascript
复制
//=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()

测试:

代码语言:javascript
复制
//=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
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-28 19:07:27

也许将Konacha的重置函数设置为noop会起到作用:

代码语言:javascript
复制
Konacha.reset = ->

默认情况下,它会在每次测试前清除body elmenet。你可以在Jo Liss的幻灯片中找到这一点和其他有用的技巧:http://www.slideshare.net/jo_liss/testing-ember-apps

票数 4
EN

Stack Overflow用户

发布于 2013-03-28 19:23:38

我有一个使用Konacha的example app和一个最新的Ember版本。我发现,将应用程序的就绪推迟到每次测试运行,然后提前准备并等待新的应用程序就绪承诺解决是很有帮助的。下面是来自test_helper.js的代码

代码语言:javascript
复制
//= 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();
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15679065

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档