2012-01-17 9 views
0

spec/category_keyword/categories.htmlに備品を読み込もうとしています。フィクスチャの内容はkeywordsListView.elは、固定具が何らかの形でロードされていないことを私に示唆している定義されていない、しかしjqueryジャスミン、備品がロードされていません

私のテスト

$(function() { 

    beforeEach(function(){ 
    keywordsListView = new KeywordsListView({ 
     el: $("#keywords_list") 
    }) 
    }) 

it("should ...", function() { 
    expect(keywordsListView.el.attr("id")).toEqual("keywords_list"); 
}) 

}) 

です。私はジャスミンスイートを火かき棒で見ましたが、治具に関連するものは何も見ませんでした。私はジャスミンの宝石を使用しています。私は何かを有効にしなければなりませんか?

+0

「el:」「myCoolJQuerySelector」のようにクールであるため、ビューをテストするのが難しくなります。私はいつもコンストラクタのviews要素を渡しますので、私がテストしているときに私の見解に簡単に擬似を入れることができます。 –

+0

私はあなたを理解しているか分からない。 keywordsListView.elはいずれの方法でも定義されていません。 –

+0

あなたのテストでは、新しいDOM elを作成してビューに渡すことができます。あるいは、模擬テストを渡すだけでよいので、テスト中はDOMに依存しません。ビュー内のDOMの照会は、テストするクラスに新しいインスタンスを作成するような反パターンです。確かにこれはあなたの具体的な質問に対する直接的な答えではありませんでしたが、装備を積み込むことで台無しにならない方法を示しています。 –

答えて

0

これを見ると、テストではkeywordsListView変数にアクセスできないと思います。 beforeEach関数の上にkeywordsListView変数を宣言し、beforeEachに現在持っているようにそれを設定します。

$(function() { 

    var keywordsListView; 

    beforeEach(function(){ 
    keywordsListView = new KeywordsListView({ 
     el: $("#keywords_list") 
    }) 
    }) 

it("should ...", function() { 
    expect(keywordsListView.el.attr("id")).toEqual("keywords_list"); 
}) 

}) 
0

ジャスミン自体は任意のフィクスチャの負荷が含まれていない、HTMLの記者は、ジャスミンは触れないであろうことをあなたにdiv#jasmine_contentを与え、必要に応じてにHTMLを書くためにあなた次第です。より複雑なフィクスチャをロードできるようにする必要がある場合は、それを行うためのプラグインがあります。私が使った唯一のものはjasmine-jqueryです。ジャスミン-jqueryのは、そうでない場合は、あなたが行うことができます他の事は、バックボーンはのための要素を作成してみましょうさjasmine.getFixtures().fixturesPath = <something>

を設定することにより構成されていない限り、あなたの備品がspec/javascripts/fixturesであることを期待している

$(function() { 
    beforeEach(function(){ 
    loadFixtures('category_keyword/categories.html'); 
    keywordsListView = new KeywordsListView({ 
     el: $("#keywords_list") 
    }); 
    }); 

    it("should ...", function() { 
    expect(keywordsListView.el.attr("id")).toEqual("keywords_list"); 
    }); 
}); 

注:これであなたのような何かを行うことができますもちろん、これを行うには、サーバーが生成したマークアップに頼るのではなく、ビューをレンダリングする必要があります。これはあなたのビューをより自己完結型にします。

0

あなたのフィクスチャをロードした後、あなたのモデルのスパイを作らずにバックボーンの機能/方法を呼び出さなければなりません。

これで、読み込んだHTMLコンテンツが見つかりました。

同様:

loadFixtures("/path/to/fixtures.html");   
SpyOnObj.functionname();       
expect($('body')).toHaveId("{ELEMENT_ID}"); 

私はこの意志はあなたに役立ちます願っています。

関連する問題