gpt4 book ai didi

javascript - 如何正确导出 Node.js 模块中的变量以使其对单元测试可见

转载 作者:太空宇宙 更新时间:2023-11-04 01:02:48 27 4
gpt4 key购买 nike

我正在尝试对 node.js 模块进行单元测试,我想知道如何正确导出变量和对象?这样我就可以在单元测试中访问它们并对其进行处理。

源代码:

var someObject = {};

var Array = [189, 347, 497, 632, 750, 900, 995, 1137],
someNumber = 142,
sizeOfArray = Allowance.length;

someObject = {

method1 : function (info) {
//something...
return {
someOtherMethod1: someObject.method1(info) && someObject.method2(info)
someOtherMethod2: someObject.method3(info)
};
},

method2 : function (info) {
//something...

return something2;
}

method3 : function (info) {
//something...

return something3;
}
};

module.exports = someObject;

所以通过这样做:

module.exports = someObject;

我可以在 mocha 的单元测试文件中访问 someObject,但是如何访问其他变量,如 Array、sizeOfArray、someNumber?

我尝试添加这个:

module.exports = {

someObject : someObject,
Array : Array,
someNumber : someNumber,
sizeOfArray : sizeOfArray
};

但是我的单元测试文件无法读取它

编辑:

这是我的单元测试

var assert = require("assert") 
var expect = require("expect.js")
var chai = require("chai")

var sourceCode = require('../src/sourceCode')


describe("Something..", function() {

var Info = {
//some data...
};


describe("Properties", function() {

it("has someObject defined", function() {
expect(someObject).not.to.be.undefined;
});

it("has Array defined", function() {
expect(Array).not.to.be.undefined;
});

it("has someNumber defined", function() {
expect(someNumber).not.to.be.undefined;
});

it("has sizeOfArray defined", function() {
expect(sizeOfArray).not.to.be.undefined;
})

})

describe("Methods", function() {

it("should have method1 defined", function() {
expect(sourceCode.someObject.method1(Info)).not.to.be.undefined;
});

it("should have method2 defined", function() {
expect(sourceCode.someObject.method2(Info)).not.to.be.undefined;
});
})

};

@奥古斯托

这就是我所说的测试方法1

it("should return positive when conditions are met", function() {

var result = sourceCode.someObject.method1(Info);

expect(result).not.to.be.undefined;
expect(result.eligible).not.to.be.undefined;
expect(sourceCode.result.someOtherMethod2).not.to.be.undefined;

expect(sourceCode.result.someOtherMethod1).to.equal(true);
});

最佳答案

我认为问题出在你的单元测试中。您没有访问对象中的属性

var sourceCode = require('../src/sourceCode');

//CODE CODE CODE

expect(Array).not.to.be.undefined;

您尝试访问 Array 变量而不是 sourceCode.Array 属性。由于您没有定义 Array 变量,因此您收到了未定义的错误消息。正确的代码是:

expect(sourceCode.Array).not.to.be.undefined; 

所以..在你的单元测试中试试这个:

var assert = require("assert") 
var expect = require("expect.js")
var chai = require("chai")

var sourceCode = require('../src/sourceCode')


describe("Something..", function() {

var Info = {
//some data...
};


describe("Properties", function() {

it("has someObject defined", function() {
expect(sourceCode.someObject).not.to.be.undefined;
});

it("has Array defined", function() {
expect(sourceCode.Array).not.to.be.undefined;
});

it("has someNumber defined", function() {
expect(sourceCode.someNumber).not.to.be.undefined;
});

it("has sizeOfArray defined", function() {
expect(sourceCode.sizeOfArray).not.to.be.undefined;
})

})
};

关于javascript - 如何正确导出 Node.js 模块中的变量以使其对单元测试可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25655446/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com