簡體   English   中英

如何模擬通過require創建的對象

[英]how to mock object created via require

我是node.js的新手,在大多數代碼中,我看到我沒有看到IoC / DI樣式構造函數注入依賴項。

相反,通常node.js擴展名require()用於創建允許訪問外部模塊導出的本地變量。

但是在編寫單元測試(隔離單層/函數)時,如何模擬通過使用require創建的變量訪問的模塊?

/helpers/dataHelper.js

var dataModel = require('../models/dataModel.js');

var getFormattedDataForRegion = function(region, callback) {
    var data = {};
    // validate region
    // query dataModel
    // async.map format data items
    // callback(data);
}

/tests/dataHelperTests.js

describe('dataHelper', function(){

    it('getFormattedDataForRegion returns expected response', function(done){

        var expectedData = {};
        // populate expectedData

        // **** need some way to mock dataModel *****

        dataHelper.getFormattedDataForRegion("west", function(data){
            expect(data).to.eql(expectedData);
            done();
        });
    });

這是通過proxyquire完成的。

我個人不喜歡這種技術,但這是我發現尊重“節點方式”並且仍然能夠輕松測試的最佳方式。 你做的:

var proxyquire =  require('proxyquire'),
    dataModelMock = require('./mocks/dataModel');

proxyquire('path/to/helpers/dataHelper.js', { '../models/dataModel.js': dataModelMock });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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