0

Jest を使用して角度のある UI に対して小さなテストを実行しようとしていますが、5 秒後にタイムアウトになります。これが私のコードです:

jest.autoMockOff();

require('../../../../bower_components/angular/angular');
require('../../../../bower_components/angular-mocks/angular-mocks');

window.Event = {};

describe('about', function(){

   var mockScope;

   pit('updates the view ', function(done){
        return runTest()
       .then(function(){
           var $ = require('../../../../bower_components/jquery/dist/jquery');
           expect($("#about-div").text()).toEqual('fred');  
       });
    });

    function runTest() {
       var q = require('../../../../bower_components/q/q');
       var defer = q.defer();

       require('../../../../app/scripts/app');
       require('../../../../app/scripts/controllers/about');

       angular.mock.module('app');
       inject(function($rootScope, $controller){
          mockScope = $rootScope.$new();
          controller = $controller('aboutController', {$scope: mockScope});
       });

       document.body.innerHTML =
            '<html>' +
            '   <body>' +
            '      <div ng-controller="aboutController">' +
            '         <div id="about-div" >{{firstName}}</div>' +
            '      </div>' +
            '   </body>' + 
            '</html>';

       setTimeout(function() { defer.resolve(); }, 1000);

       return defer.promise;
   };
});

私はピットを使用しているので、Angular がビューを更新できるように 1 秒の遅延を設定できますが、setTimeout の匿名関数が呼び出されないようです。約束が果たされず、テストがタイムアウトします。Jest は Jasmine 1.3.0 を使用しているため、runs() と waitsFor() も使用してみましたが、同じ結果が得られました。

4

1 に答える 1