Node.js 需要帮助通过这个简单的javascript mocha测试吗
在这里,我用Javascript编写了一个简单的实用程序类,用于解析和字符串化Json数据Node.js 需要帮助通过这个简单的javascript mocha测试吗,node.js,tdd,mocha.js,Node.js,Tdd,Mocha.js,在这里,我用Javascript编写了一个简单的实用程序类,用于解析和字符串化Json数据 //public/js/utilities.js function UtilitiesClass(){ var parserJson = function(obj){ if (typeof(obj) !== "undefined") { return JSON.parse(obj); }; } var stringifyJso
//public/js/utilities.js
function UtilitiesClass(){
var parserJson = function(obj){
if (typeof(obj) !== "undefined") {
return JSON.parse(obj);
};
}
var stringifyJson = function(obj){
if (typeof(obj) !== "undefined") {
return JSON.stringify(obj);
};
}
}
module.exports = UtilitiesClass
然后在我的test.js中
require('../public/js/utilities.js');
describe('JS Utilities Classs Tests', function () {
var jsonObjToStr, strtojsonObj;
beforeEach(function () {
this.jsonObjToStr = [1, 2, 3, 4];
this.strtojsonObj = "[1, 2, 3, 4]";
});
it('should parse a string into JSON ', function () {
expect(parserJson(this.strtojsonObj)).to.not.be.undefined;
});
it('should stringify JSON into a string', function () {
expect(stringifyJson(this.jsonObjToStr)).to.not.be.undefined;
});
});
然后,当我尝试运行mocha
时,我得到了以下错误输出
andy@LINUXAWCM:~/Projects/Javascript/e-shop-gadgets$ mocha
JS Utilities Classs Tests
1) should parse a string into JSON
2) should stringify JSON into a string
0 passing (12ms)
2 failing
1) JS Utilities Classs Tests should parse a string into JSON :
ReferenceError: parserJson is not defined
at Context.<anonymous> (test/test.js:12:18)
2) JS Utilities Classs Tests should stringify JSON into a string:
ReferenceError: stringifyJson is not defined
at Context.<anonymous> (test/test.js:16:16)
andy@LINUXAWCM:~/Projects/Javascript/e-shop-gadgets$mocha
JS实用程序类测试
1) 应该将字符串解析为JSON
2) 应该将JSON字符串化为字符串吗
0通过(12毫秒)
2失败
1) JS实用程序类测试应将字符串解析为JSON:
ReferenceError:未定义parserJson
在上下文中。(test/test.js:12:18)
2) JS实用程序类测试应将JSON字符串化为字符串:
ReferenceError:未定义stringifyJson
在上下文中。(test/test.js:16:16)
为什么这不简单?public/js/utilities.js
上的require语句很好。但是它的意思是,parserJson
和stringifyJson
在实际加载时没有定义或找到
不是吗?仅仅在函数中声明变量是不够的,您需要返回这些变量,因为它们在函数的作用域之外不可用
您还导出了一个函数,但没有调用它
此外,需要一个文件并不能神奇地使变量在您的作用域中可用
//public/js/utilities.js
function UtilitiesClass(){
var parserJson = function(obj){
if (typeof(obj) !== "undefined") {
return JSON.parse(obj);
};
}
var stringifyJson = function(obj){
if (typeof(obj) !== "undefined") {
return JSON.stringify(obj);
};
}
return {
parserJson: parserJson,
stringifyJson: stringifyJson
};
}
module.exports = UtilitiesClass;
虽然您可能不需要导出函数,但只需导出每个方法即可
//public/js/utilities.js
var parserJson = function(obj){
if (typeof(obj) !== "undefined") {
return JSON.parse(obj);
};
}
var stringifyJson = function(obj){
if (typeof(obj) !== "undefined") {
return JSON.stringify(obj);
};
}
module.exports = {
parserJson: parserJson,
stringifyJson: stringifyJson
};
那你就用
var utils = require('../public/js/utilities.js');
很抱歉但这怎么能回答我的问题呢?谢谢你,本。这就解释了为什么我不能完全理解module.exports如何在我所在的范围内正常工作。我想我需要了解它的基本原理,更恰当地使用它。干杯
var utils = require('../public/js/utilities.js');