我写的终端到终端的测试与casperjs,想假AJAX服务器响应伪造的XMLHttpRequest与casperjs
我已经想出了包括一个简单的脚本嘲笑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;
}
然后我打电话setup_ajax
在我的卡斯帕测试样
casper.then(function(){
this.evaluate(setup_ajax)
}
但似乎未来阿贾克斯请求仍然避免我的xmlhttprequest实现。
我试过在飞行运行setup_ajax,使用$。就绪(),并具有从卡斯帕叫过,但这些都不曾
更有趣的是,检查对象的存在奇怪的失败。
function setup_ajax(){
return typeof(sinon)
}
casper.then(function(){
var x = this.evaluate(setup_ajax)
casper.log(x) // logs 'null'
}
但兴农正确包括,至少卡斯帕当我做了setup_ajax功能以外的一些调用它,但是当我故意曾兴农排除导致错误没有造成任何错误。
对casperjs下的mocking xmlhttprequests有什么建议吗?
完成请求正是这就是我尝试使用,你可以给你会怎么做更详细的说明,请为我的方法(如上文所述)不能正常工作 – Akasha 2012-07-07 19:55:04
实际上,这是我的casperjs命令: $ casperjs test --direct --log-level = debug --includes = public/js/libs/jquery.js,public/js/libs/underscore-min.js,test /stubs/sinon-1.3.4.js,test/stubs/ajax_requests.js测试/前端/ jobs.js 你可以看到应该如何包含libs。 – Akasha 2012-07-07 20:05:48
'--includes' cli参数不接受客户端目标库;它只是提供一种方便的方式来加载在phantomjs环境中使用的通用脚本 - 而不是在远程DOM中。 (提示:我是casperjs的作者) – NiKo 2012-07-08 20:14:52