nodejs url.parse test返回undefined

时间:2015-05-11 15:01:42

标签: node.js url

这可能是一个非常愚蠢的问题,但是如果我只是传入一个URL字符串,那么url.parse在这种情况下会返回undefined是有原因的{{1} }?

请记住我是proto.getProtocol("http://www.some.com/test")的新手。

nodejs

'use strict'; var url = require("url"); var proto = {}; proto.getProtocol = function (path) { console.log(path); var parts = url.parse(path, true); console.log(parts); return parts; }; module.exports = proto; 在运行测试时返回undefined。

测试:

console.log(parts);

2 个答案:

答案 0 :(得分:1)

代码工作正常。

var proto = require( './proto' );

var parts = proto.getProtocol( "http://www.some.com/test" );
console.log( parts );

{ protocol: 'http:',
  slashes: true,
  auth: null,
  host: 'www.some.com',
  port: null,
  hostname: 'www.some.com',
  hash: null,
  search: '',
  query: {},
  pathname: '/test',
  path: '/test',
  href: 'http://www.some.com/test' }

你可以发布你正在使用的整个代码吗?

答案 1 :(得分:1)

您正在使用proxyquiregetProtocol的{​​{1}}方法替换为不进行网址解析的函数(即由url.parse生成的Sinon间谍函数)。间谍功能可以告诉你它是否被调用,但它对parings URL一无所知。

你可能想做sinon.spy(),它产生一个调用sinon.spy(require("url"), "parse")的间谍函数并返回结果。相比之下,require("url").parse返回的函数什么都不做,除了记住它是如何被调用的。