簡體   English   中英

如何在node.js模塊中正確導出變量以使其對單元測試可見

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM