2016-04-08 18 views
0

URL'yi iletebileceğim bir URL yükleyicisi alıyorum ve URL'yi yüklemek için dinamik olarak oluşturulmuş bir JavaScript new Image() ve src özelliğini kullanacaktır. Bir hata olursa, konsola giriş yapıyorum.Yasemin'de JavaScript Image onerror geri arama nasıl test edilir?

basitleştirilmiş JavaScript kodu olacaktır:

var UrlLoader = function(url) { 
    this.url = url; 
    this.image = new Image(); 

    this.image.onerror = function() { 
    console.log("image error"); 
    }; 

    this.load = function() { 
    this.image.src = this.url; 
    }; 
} 

Sorum şimdi ediliyorsa ben console.log("image error") Ben JSFiddle with the test suite set up oluşturulan

var urlLoader = new UrlLoader(); 
urlLoader.load("any.png"); 

çalıştırdığınızda, idam, ama emin test edebilirsiniz nasıl başarısız gözlük ve UrlLoader'u test etmenin bir yolunu bulmak için herhangi bir yardımı takdir edecektir.

cevap

2

Bu günlüğü yöntemi denilen olmadığını da kontrol etmek kullanmak çizgidir

expect(console.log).toHaveBeenCalledWith("image error"); 

Doğru ama hata etkinliği tetiklenir çünkü, henüz bu zamana kadar aramadı onerror işleyicisi olan sorun/hemen değil ele ama daha sonra asynchronically

Sen Jasmi ile test zaman uyumsuz koduyla ilgili daha fazla bulabilirsiniz bu

describe("A suite", function() { 

    beforeEach(function(done){ 
    spyOn(console, "log"); 

    var imageLoader = new ImageLoader("any.png"); 
    imageLoader.image.addEventListener("error", function() { 
     done(); 
    }); 
    imageLoader.load(); 
    }); 

    it("contains spec with an expectation", function() { 
    expect(console.log).toHaveBeenCalledWith("image error"); 
    }); 
}); 

için test değiştirmeniz gerekir ne this article

+0

Çözümünüzün nasıl çalıştığına dair açıklama ve çözüm için teşekkür ederiz. Çok takdir edildi. – murphyslaw

İlgili konular