2016-08-23 5 views
0

jasmineとjQueryを使用してDOMでイベントをテストしようとしています。 テーブルに行を追加するという極端な方法で単純化しました。テーブルに行を追加するとジャスミンテストに反映されない

jQuery("#myTableId tr").length 
//returns 0 
jQuery("#myTableId").append("<tr></tr>") 
jQuery("#myTableId TR").length 
//returns 1 

しかしとき:私が直接ブラウザコンソールでこれを行う場合は、それが動作 (私は、誰もが、それは私も前に試してみましたbeforeEachは、ロードされていない示唆しているだけの場合には、テーブルをロードし、それが定義されます)私のテストでは、私は書いています:

it("Should have no rows in the beginning ", function() { 
    expect(jQuery("#myTableId tr").length).toBe(0) 
}); 
//WORKS because the table has no rows 

it("Should add a row when I ADD A ROW ", function() { 
    jQuery("#myTableId").append("<tr></tr>") 
    expect(jQuery("#myTableId tr").length).toBe(1) 
}); 
//FAILS because it didn't append anything 

これは既知の動作ですか? 何か間違っていますか?

EDIT:さらに読者のために 、ユーザー@flowtronが指摘するように:

it("Should EXIST ", function() {  
    expect(jQuery("#myTableId").length).toBe(1); 
}); 
//FAILS 
it("Should EXIST ONLOAD ", function() { 
    expect(jQuery(document).ready(jQuery("#myTableId")).leng‌​th).toBe(1); 
}); 
//PASS 
+1

DOMは間違いなく確立されている - 私は意味、あなたは体でこれを実行しています.onLoad?またはjQuery(function(){/ *ここで* /}); ???だからjQuery( "#myTableId")。長さは!= 0、はい!?! – flowtron

+0

ありがとう!あなたは完全に正しいです、それはまったくロードされていません、この速いハックは行く方法を証明しました!: それは "存在するべきです"、function(){ expect(jQuery( "#myTableId")。length).toBe( 1); }); //は それ( "ONLOADが存在すべき"、関数()は失敗{ 期待(jQueryの(ドキュメント).ready(jQueryの( "#caseListTableを"))の長さ).toBe(1);} // PASS –

答えて

0

beforeを使用してみてください:

describe('Adding a row', function(){ 
    before(function(){ 
    jQuery('#myTable').append('<tr></tr>'); 
    }); 

    it('should have 1 row', function(){ 
    expect(jQuery("#myTable tr").length).toBe(1) 
    }) 
}) 
+0

これを試してみましたが、0行(shouldn ')は1行ではありません。 –

+0

jQuery('#id ')。append'がチェックしてください。 – Bwaxxlo

関連する問題