Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 需要帮助通过这个简单的javascript mocha测试吗_Node.js_Tdd_Mocha.js - Fatal编程技术网

Node.js 需要帮助通过这个简单的javascript mocha测试吗

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

在这里,我用Javascript编写了一个简单的实用程序类,用于解析和字符串化Json数据

//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');