首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XMLHttpRequest未定义,angular模拟- ajax不监听ajax调用的源代码?

XMLHttpRequest未定义,angular模拟- ajax不监听ajax调用的源代码?
EN

Stack Overflow用户
提问于 2016-09-29 00:51:02
回答 1查看 330关注 0票数 3

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

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

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

代码语言:javascript
复制
global.XMLHttpRequest = require('xmlhttprequest').XMLHttpRequest;

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

然而,这个修复并不能解决我想要做的事情。

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

作品:

代码语言:javascript
复制
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');
});

不起作用:

代码语言:javascript
复制
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,所以我不确定这是否会有问题。

EN

回答 1

Stack Overflow用户

发布于 2017-03-13 22:27:29

这里有一个jasmine-ajax项目,旨在帮助您提供所需的内容。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39753397

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档