http://shairez.com/2012/07/ember-js-tdd-how-to-test-your-ember-views/に沿って、Emberビューの基本的なテストを作成しようとしていますが、 「UncaughtTypeError:Undefinedのメソッド'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()
内部への呼び出しもあります。Ember.run
また、テストを実行しなくても、キャッチされない例外が発生することに気付きました。これは、ApplicationViewを除いて同じです。だから私はテストのためにすべてを正しく初期化しているのだろうかと思っています。インクルードファイルは以下のとおりです(アセットパイプラインでRails 3.2を使用)
Spec.js.coffee
#=require_tree ./
#=require_tree ../../app/assets/javascripts
app / Assets / 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 .
app / Assets / javascripts / sysys.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()