我正在尝试为 Ember 视图编写一个基本测试,如下所示:http: //shairez.com/2012/07/ember-js-tdd-how-to-test-your-ember-views/但我保留得到一个“未捕获的类型错误:无法调用未定义的方法‘appendTo’。
规格:
describe "my view", ->
myView = null
beforeEach ->
myView = Sysys.ActView.create()
Ember.run ->
myView.append()
afterEach ->
Ember.run ->
myView.remove()
myView = null
it "should be defined", ->
expect(myView).toBeDefined()
it "should have a button", ->
expect(myView.$("button.btn-primary").length).toEqual(1);
错误来自Ember.View.appendTo:
this.$().appendTo(target)
哪里target
是<body class="ember-application">...</body>
(如预期的那样)和this
是myView
。但是,this.state
是“preRender”并且this.$()
未定义,这就是发生错误的原因。
我不确定我做错了什么:我认为视图正在创建但未呈现。根据教程的建议,我也可以调用append()
inside 。Ember.run
我还注意到,即使我不运行任何测试,我仍然会得到一个未捕获的异常——除了 ApplicationView 之外,它是一样的。所以我想知道我是否为测试正确初始化了所有内容。包含文件如下(使用带有资产管道的 Rails 3.2)
Spec.js.coffee
#=require_tree ./
#=require_tree ../../app/assets/javascripts
应用程序/资产/javascripts/application.js.coffee:
#= require jquery
#= require jquery_ujs
#= require vendor/handlebars-1.0.0.beta.6
#= require vendor/ember-1.0.0-pre.2
#= require vendor/ember-data
#= require_self
#= require sysys
Sysys = Ember.Application.create();
#= require_tree .
应用程序/资产/javascripts/syssys.js.coffee:
#= require ./store
#= require_tree ./models
#= require_tree ./controllers
#= require_tree ./views
#= require_tree ./helpers
#= require_tree ./templates
#= require_tree ./routes
#= require_self
Sysys.initialize()