gpt4 book ai didi

javascript - 如何在 Jasmine 中测试 JavaScript 图像 onerror 回调?

转载 作者:行者123 更新时间:2023-11-28 18:38:45 25 4
gpt4 key购买 nike

我有一个 url 加载器,我可以传入 URL,它将使用动态创建的 JavaScript new Image() 及其 src 属性来加载网址。如果发生错误,我会将其记录到控制台。

简化的 JavaScript 代码是:

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;
};
}

我现在的问题是,当我运行时,如何测试 console.log("image error") 是否被执行

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

我创建了一个JSFiddle with the test suite set up ,但未通过规范,并且希望能帮助您找出测试 UrlLoader 的方法。

最佳答案

这是您用来检查日志方法是否被调用的行

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

这是正确的,但问题是 onerror 处理程序此时尚未调用,因为错误事件不是立即触发/处理,而是稍后异步触发/处理

您应该将测试用例更改为此

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");
});
});

您可以在 this article 中找到有关使用 Jasmine 测试异步代码的更多信息。

关于javascript - 如何在 Jasmine 中测试 JavaScript 图像 onerror 回调?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36508714/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com