javascript - 在测试 Ember.js (ember-cli) 应用程序时在拆解中获取 “App is not defined”

标签 javascript ember.js ember-cli

我正在尝试测试一个简单的 ember-cli 应用程序(遵循@bcardarella Dockyard 教程:http://reefpoints.dockyard.com/2014/05/09/building-an-ember-app-with-rails-part-3.html)

这是我的测试:

import startApp from 'wallet2/tests/helpers/start-app';
module('Integration - Landing Page', {
  setup: function() {
    var App;
    return App = startApp();
  },
  teardown: function() {
    return Ember.run(App, "destroy");
  }
});

test('Should ask me to log in', function() {
  return visit('/').then(function() {
    equal(find('h1#title').text(), 'Please login');
    return equal(find('form').length, 1);
  });
});

测试有效,但我明白了

3. Teardown failed on Should ask me to log in: App is not defined
Source:     
    at Object.module.teardown (wallet2/tests/integration/landing-page-test.js:13:26)
    at Object.Test.teardown (http://localhost:4200/assets/qunit.js:228:35)
    at http://localhost:4200/assets/qunit.js:364:10
    at process (http://localhost:4200/assets/qunit.js:1453:24)
    at http://localhost:4200/assets/qunit.js:479:5

这是我的 start-app.js

var Application = require('wallet2/app')['default'];
var Router = require('wallet2/router')['default'];

export default function startApp(attrs) {
  var App;

  var attributes = Ember.merge({
    // useful Test defaults
    rootElement: '#ember-testing',
    LOG_ACTIVE_GENERATION:false,
    LOG_VIEW_LOOKUPS: false
  }, attrs); // but you can override;

  Router.reopen({
    location: 'none'
  });

  Ember.run(function(){
    App = Application.create(attributes);
    App.setupForTesting();
    App.injectTestHelpers();
  });

  App.reset(); // this shouldn't be needed, i want to be able to "start an app at a specific URL"

  return App;
}

从昨天开始,这让我发疯。感谢您的帮助!

最佳答案

App 仅在设置方法中定义。 用这样的东西更新模块部分:

    import startApp from '../../helpers/start-app'; // change this due to your folder
    var App;
    module('Integration - Landing Page', {
      setup: function() {
        App = startApp();
      },
      teardown: function() {
        Ember.run(App, "destroy");
      }
    });

关于javascript - 在测试 Ember.js (ember-cli) 应用程序时在拆解中获取 “App is not defined”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24382559/

相关文章:

javascript - 构建后的 Ember 配置文件

javascript - 使用 jquery 加载后更改输入日期最小日期的属性

javascript - EXT JS中的只读组合框

javascript - 在 javascript 中将多值 Map<String, Object [ ]> 转换为 json

css - 如果我在路由中使用媒体 : Ember. inject.service() ,则 template.hbs 中的 ember 响应式 {{media}} 是未定义的。为什么?

ember.js - Ember 2 : Truncate text and add ellipses

javascript - Cordova 2.7 页面加载时出现提示消息

javascript - 一次批量保存多个模型

javascript - 使用 EmberJS 路由器的绑定(bind)?

ember.js - 如何向选定的组件添加类?