这可能是一个非常愚蠢的问题,但是如果我只是传入一个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);
答案 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)
您正在使用proxyquire
将getProtocol
的{{1}}方法替换为不进行网址解析的函数(即由url.parse
生成的Sinon间谍函数)。间谍功能可以告诉你它是否被调用,但它对parings URL一无所知。
你可能想做sinon.spy()
,它产生一个调用sinon.spy(require("url"), "parse")
的间谍函数并返回结果。相比之下,require("url").parse
返回的函数什么都不做,除了记住它是如何被调用的。