首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >nodejs -使用nock模拟YQL请求

nodejs -使用nock模拟YQL请求
EN

Stack Overflow用户
提问于 2015-08-27 19:20:10
回答 1查看 80关注 0票数 0

我正在尝试为一个脚本编写一些单元测试,但是我似乎无法让YQLnock一起工作。使用nock我可以毫无问题地模拟http请求,如下面的示例所示,但是yql的测试失败了,无论我使用什么,yql总是不会产生任何结果(我也在查询中尝试了xpath )。

代码语言:javascript
复制
var http = require('http'),
    nock = require('nock'),
    yql = require('yql')

/**
 * Mock request & test with http
 */
var api = nock("http://example.tld")
    .get("/foobar/")
    .reply(200, "<html><body><table><tr><td class=\"tablebody\"><a href=\"#\">link</a></td></tr></table></body></html>")

http.get("http://example.tld/foobar/", function(resp){
    var str = "";

    resp.on("data", function(data){ str+=data})
    resp.on("end", function(){
        console.log("Got Result: ", str)
    })
})


/**
 * Mock request and test with YQL
 */
var api = nock("http://example.tld")
    .get("/foobar/")
    .reply(200, "<html><body><table><tr><td class=\"tablebody\"><a href=\"#\">link</a></td></tr></table></body></html>")

var query = new yql('select * from html where url="http://example.tld/foobar/"')
query.exec(function(err, results){

    console.log(results)
})

我想知道这是一个头文件的问题,但我尝试过的任何东西都没有在yql上产生任何结果。-非常感谢你的帮助,戴蒂

EN

回答 1

Stack Overflow用户

发布于 2015-08-28 19:20:41

似乎nock双重转义了url,这对我来说是个问题,因为url包含一个转义的url。

最后,我使用了允许我存根yql.execproxyquire。所以我的yql单元测试现在看起来是这样的:

代码语言:javascript
复制
var json = JSON.parse(fs.readFileSync('expectedResult.json', 'utf8'))
    yqlStub = function(query){
        return {
            exec: function(fn){
                fn(null, json)
            }
        }
    },
    myModule = proxyrequire('lib/myModule.js', {'yql', yqlStub})

myModule.run("http://example.tld", function(err, result){
    //test result here
})
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32248013

复制
相关文章

相似问题

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