我正在实现jasmine来测试我的前端和量角器,我想模拟一些服务器响应。我目前正在尝试让jasmine-ajax工作,我在监听正在进行的ajax调用时遇到了一些问题。
我认为问题源于mock-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,所以我不确定这是否会有问题。
发布于 2017-03-13 22:27:29
这里有一个jasmine-ajax项目,旨在帮助您提供所需的内容。
https://stackoverflow.com/questions/39753397
复制相似问题