2

これが私がやっていることです

私のテストスクリプト

requirejs(['jquery', 'application'], function($, app){
describe('View Products List', function(){
    // All test in this test suite fails    
    it('Products list should be present', function(done) {    
      $('.productlist').length.should.equal(1);  
      return done();
    });
    it('product list should be have a checkbox for product selection', function(done) {      
      $('.productlist td:first input[type=checkbox]').length.should.equal(1);  
      return done();
    });
    it('product name should be anchor which could be clickable', function(done) {
      $('.productlist td:first a').length.should.equal(1);  
      return done();enter code here
    });
    it('Should show product details on click of product name', function(done) {
      $('.productlist td:first a').click();
      $('.editproduct').length.should.equal(1);
      return done();
    });
 });
 });

バックボーン ビュー

var Products = new Backbone.View.extend({
tagName : 'div'
template : productsTemplate
render: function() {
       $(this.el).html(this.template());
   }
 initialize: function() {
       // some code
   }
});

説明

テスト スクリプトを実行して URL #products をロードすると、製品ビューが HTML 本文にレンダリングされます。ビューによって生成された DOM 要素をテスト ケースでチェックする必要があります。テストが最初に実行されるようです。つまり、ビューが dom 要素をレンダリングする前に実行されるため、失敗します。テストを実行する前に、ビューが完全にレンダリングされたことを確認するにはどうすればよいですか?

4

1 に答える 1

0

beforeEachMocha では、テストの前に実行されることを確認するために、非同期コードをセクションに含める必要があります。

あなたの場合、このセクションでビューを再レンダリングしてみてください:

beforeEach(function() {
    productListView.render();
});

describe('View Products List', function(){
    it("...
    ...

詳細については、この投稿を参照してください: http://lostechies.com/derickbailey/2012/08/17/asynchronous-unit-tests-with-mocha-promises-and-winjs/

于 2013-04-11T10:38:00.857 に答える