2016-09-28 25 views
2

我正在执行茉莉花测试我的前端与量角器,我想嘲笑一些服务器响应。我目前正在努力使茉莉花阿贾克斯工作,我正在听阿贾克斯调用正在进行的问题。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,我的文件目录是大型项目的一部分,所以它可能不适合查找源文件的茉莉花文件结构;但是,我正在使用量角器,所以我不确定这是否会成为问题。

回答

0

有一个项目jasmine-ajax旨在帮助您在这里给你什么。

相关问题