我正在执行茉莉花测试我的前端与量角器,我想嘲笑一些服务器响应。我目前正在努力使茉莉花阿贾克斯工作,我正在听阿贾克斯调用正在进行的问题。XMLHttpRequest未定义,angular mock-ajax不会侦听源代码中的ajax调用?
我认为这个问题源于mock-ajax文件无法访问XMLHttpRequest对象。
我正在getJasmineRequireObj()和XMLHttpRequest的是不确定的误差,所以通过添加
global.XMLHttpRequest = require('xmlhttprequest').XMLHttpRequest;
直接向模拟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,我的文件目录是大型项目的一部分,所以它可能不适合查找源文件的茉莉花文件结构;但是,我正在使用量角器,所以我不确定这是否会成为问题。