gpt4 book ai didi

javascript - XMLHttpRequest undefined,angular mock-ajax 源码不监听ajax调用?

转载 作者:行者123 更新时间:2023-12-01 17:41:45 28 4
gpt4 key购买 nike

我正在实现 jasmine 来测试我的前端和 Protractor ,我想模拟一些服务器响应。我目前正在尝试让 jasmine-ajax 工作,但我在监听正在进行的 ajax 调用时遇到了问题。

我认为问题源于模拟 ajax 文件无法访问 XMLHttpRequest 对象。

我收到 getJasmineRequireObj() 和 XMLHttpRequest 是未定义的错误,所以我通过添加

修复了它
global.XMLHttpRequest = require('xmlhttprequest').XMLHttpRequest;

直接到 mock-ajax.js 源文件。

但是,这个修复并没有解决我想要做的事情。

从测试规范中,我可以检测到 ajax 调用:

作品:

require('../mock-ajax.js');
...
it ('should allow admin to delete user', function () {

var xhr = new XMLHttpRequest();

xhr.open("GET", "/users");
xhr.send();

page.deleteButton.click();

expect(jasmine.Ajax.requests.mostRecent()).toBeDefined(true);
var request = jasmine.Ajax.requests.mostRecent();
request.respondWith({
"status": 200,
"contentType": 'application/json',
"responseText": 'hello'
});

expect(request.method).toBe('GET');
});

不起作用:

require('../mock-ajax.js');
...
it ('should allow admin to delete user', function () {
page.deleteButton.click();

expect(jasmine.Ajax.requests.mostRecent()).toBeDefined(true);
var request = jasmine.Ajax.requests.mostRecent();
request.respondWith({
"status": 200,
"contentType": 'application/json',
"responseText": 'hello'
});

expect(request.method).toBe('DELETE');
});

page.deleteButton.click();从浏览器进行 ajax 调用,但未从 jasmine.Ajax.requests.mostRecent() 检测到此调用。

我怎样才能让 jasmine 检测在测试规范之外进行的 ajax 调用,或者这是不可能的? Jasmine 是否无法检测到浏览器中的调用,因为我使用的是 Protractor ?另外,我没有 jasmine specRunner.html 并且我的文件目录是一个大型项目的一部分,因此它可能不适合用于查找源文件的 jasmine 文件结构;但是,我正在使用 Protractor ,所以我不确定这是否会成为问题。

最佳答案

有一个项目jasmine-ajax旨在帮助您满足您的需求。

关于javascript - XMLHttpRequest undefined,angular mock-ajax 源码不监听ajax调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39753397/

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