2017-03-03 14 views
0

ジャスミンの新機能であるasyncの機能をテストしています。そのエラーを示すError: Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.私はここで何かを見逃している場合は助けてください。テストへJasmine Async Error:タイムアウト - jasmine.DEFAULT_TIMEOUT_INTERVALで指定されたタイムアウト時間内に非同期コールバックが呼び出されませんでした。

機能:

function AdressBook(){ 
    this.contacts = []; 
    this.initialComplete = false; 
} 
AdressBook.prototype.initialContact = function(name){ 
    var self = this; 
    fetch('ex.json').then(function(){ 
     self.initialComplete = true; 
     console.log('do something'); 
    }); 
} 

テスト仕様は以下の通りです:

var addressBook = new AdressBook(); 
    beforeEach(function(done){ 
     addressBook.initialContact(function(){ 
      done(); 
     }); 
    }); 
    it('should get the init contacts',function(done){ 
      expect(addressBook.initialComplete).toBe(true); 
      done(); 
    }); 

答えて

0

ソース

function AddressBook() { 
    this.contacts = []; 
    this.initialComplete = false; 
} 

AddressBook.prototype.initialContact = function(name) { 
    var self = this; 
    // 1) return the promise from fetch to the caller 
    return fetch('ex.json').then(function() { 
      self.initialComplete = true; 
      console.log('do something'); 
     } 
     /*, function (err) { 
       ...remember to handle cases when the request fails 
      }*/ 
    ); 
} 

テスト

describe('AddressBook', function() { 
    var addressBook = new AddressBook(); 
    beforeEach(function(done) { 
     // 2) use .then() to wait for the promise to resolve 
     addressBook.initialContact().then(function() { 
      done(); 
     }); 
    }); 
    // done() is not needed in your it() 
    it('should get the init contacts', function() { 
     expect(addressBook.initialComplete).toBe(true); 
    }); 
}); 
関連する問題

 関連する問題