2016-04-09 8 views
2

ジャスミンが私の第3の仕様に対して1つのエラーを投げます。 Error:タイムアウト - jasmine.DEFAULT_TIMEOUT_INTERVALで指定されたタイムアウト時間内に非同期コールバックが呼び出されませんでした。ここジャスミンが1つのエラーをスローする - エラー:タイムアウト - 非同期コールバックが呼び出されなかった

はここに私のspecファイル

describe('Address Book', function(){ 

    var addressBook, 
     thisContact; 

    beforeEach(function(){ 
     addressBook = new AddressBook(), 
     thisContact = new Contact(); 
    }); 

    it('Should be able to add a contact', function(){ 
     addressBook.addContact(thisContact); 
     expect(addressBook.getContact(0)).toBe(thisContact); 
    }); 

    it('Should be able to delete a contact', function(){ 
     addressBook.addContact(thisContact); 
     addressBook.delContact(1); 
     expect(addressBook.getContact(1)).not.toBeDefined(); 
    }); 

}); 

describe('Async Address Book', function(){ 

    var addressBook = new AddressBook(); 

    beforeEach(function(done){ 
     addressBook.getInitialContacts(function(){ 
      done(); 
     }); 
    }); 

    it('Should be able to add a contact', function(done){ 
     expect(addressBook.initialContacts).toBe(true); 
     done(); 
    }); 

}); 

が私のsrcファイル

function AddressBook(){ 
    this.contacts = []; 
    this.initialContacts = false; 
} 
AddressBook.prototype.getInitialContacts = function(cb){ 

    var self = this; 

    setTimeout(function(){ 
     self.initialContacts = true; 
     if (cb) { 
      return cb; 
     } 
    }, 3); 

} 

AddressBook.prototype.addContact = function(contact){ 
    this.contacts.push(contact); 
} 

AddressBook.prototype.getContact = function(index){ 
    return this.contacts[index]; 
} 

AddressBook.prototype.delContact = function(index){ 
    this.contacts.splice(index,1); 
} 

である私は、問題を取得していない.. ..事前に感謝を見てみてください。

答えて

3

問題はgetInitialContactsの機能です。返されたコールバックを呼び出すことはありません。非同期操作が完了したら、コールバックを呼び出すために変更する必要があります

AddressBook.prototype.getInitialContacts = function(cb){ 

     var self = this; 

     setTimeout(function(){ 
      self.initialContacts = true; 
      if (cb) { 
       return cb; 
      } 
     }, 3); 

    } 

AddressBook.prototype.getInitialContacts = function(cb){ 

    var self = this; 

    setTimeout(function(){ 
     self.initialContacts = true; 
     if (typeof cb === 'function') { 
      cb(); 
     } 
    }, 3); 

} 
+0

おかげメイト.... –

関連する問題