编程语言
首页 > 编程语言> > javascript – 伪造xmlhttprequests与casperjs

javascript – 伪造xmlhttprequests与casperjs

作者:互联网

我正在用casperjs编写端到端测试,并想伪造ajax服务器响应

我想出了一个包含一个简单脚本的想法,该脚本模拟了xmlhttprequest对象并且总是返回我预期的结果,如下所示

var ajax_requests = [
    ['GET', '/jobs', JSON.stringify(jobs)]
], stubs = stubs || {};

function setup_ajax(){
    stubs.server = sinon.fakeServer.create();
    _.each(ajax_requests, function(r){ 
        //r[1] = "http://localhost:8000" + r[1]
        r[2] = [200, { "Content-Type": "application/json" }, r[2]]
        stubs.server.respondWith.apply(stubs.server, r)
    })
    stubs.server.autoRespond = true;
    stubs.server.autoRespondAfter = 2;
}

然后我在我的casper测试中调用setup_ajax

casper.then(function(){
    this.evaluate(setup_ajax)
}

但看似未来的ajax请求仍然避免我的xmlhttprequest实现.

我试过运行setup_ajax,使用$.ready()并从casper调用它,但这些都不起作用

更有趣的是,检查对象的存在奇怪地失败了.

function setup_ajax(){
    return typeof(sinon)
}

casper.then(function(){
    var x = this.evaluate(setup_ajax)
    casper.log(x) // logs 'null'
}

但是sinon被正确包含在内,至少casper在我在setup_ajax函数之外调用它时没有引起任何错误,但是当我故意将sinon排除在外时引起了错误.

你对casperjs下的xmlhttprequests有什么想法吗?

解决方法:

您可以使用sinon.js伪造XmlHttpRequest.

标签:javascript,testing,mocking,casperjs,sinon
来源: https://codeday.me/bug/20190620/1248959.html