[英]How to properly export variables in node.js module to make it visible for unit testing
我正在嘗試對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;
});
})
};
@Augusto
這就是我在測試Method1時所說的
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;
})
})
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.