我正在使用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()中检测到此调用。
如何让茉莉花检测在测试规范之外进行的ajax调用,或者这是不可能的?是不是因为我使用量角器,茉莉花无法检测到浏览器中的调用?另外,我没有jasmine specRunner.html,我的文件目录是大型项目的一部分,因此它可能不适合用于查找源文件的jasmine文件结构;但是,我使用的是量角器,所以我不确定这是不是一个问题。