2016-01-13 5 views
0

У меня есть файл config.js с ниже код в нем:Как заглушить объект, а не метод?

module.exports: 
{ 
    development: { 
     switch: false 
     } 
} 

У меня есть еще один файл bus.js с ниже код в нем:

var config=require('config.js'); 

getBusiness:function(req,callback){ 
     if(config.switch) { 
        // Do something 
     }else{ 
       // Do something else 
     } 
} 

Теперь я хочу, чтобы блок проверить файл bus.js

require('mocha'); 

var chai = require('chai'), 
     expect = chai.expect, 
     proxyquire = require('proxyquire'); 

var bus = proxyquire('bus.js', { 
       'config':{ 
         switch:true 
        } 
}); 

describe('Unit Test', function() { 

     it('should stub the config.switch', function(done) { 
      bus.getBusiness(req, function(data) { 
       // It should stub the config.switch with true not false and give code coverage for if-else statmt. 
      }); 
      done(); 
     }); 
}); 

Любые предложения или помощь ...

+0

Так ... это не работает? (Если вы исправите оговорку о кавычках.) Что происходит? Любые ошибки? –

+0

@ T.J. Crowder Когда я тестирую console.log (config.switch), он дает мне null или undefined. – Prajwal

+0

@ T.J.Crowder Тест-код дает мне код покрытия еще части bus.js. – Prajwal

ответ

1

Вы должны REQ uire ваш модуль, как это var config=require('./config.js');.

Редактировать: Вы должны изменить свой запрос на вызов выше. Даже если он работает, когда вы прокси-сервер как (config.js), он не будет работать в реальной жизни. Также вам, вероятно, нужно будет вызвать шину таким же образом и построить объект конфигурации, как это есть в фактическом файле.

var bus = proxyquire('./bus.js', { 
      './config':{ 
       development: {     
        switch:true 
       } 
       } 
}); 
+0

Я назвал модуль «config» в своем тестовом файле. , можно ли каким-либо образом переопределить значение свойства исходного конфига с любым значением, которое я ему назначил, и использовать его для тестирования на лету? – Prajwal

+0

Я не могу предоставить значение. – Prajwal

+0

работал ... Спасибо, помощник ... – Prajwal

1

Мне кажется, что вы можете сделать это в тестовом файле:

var chai = require('chai'), 
    expect = chai.expect; 
var config = require('./config'); 

describe('Unit Test', function() { 

    it('should stub the config.switch', function(done) { 
    config.development.switch = true; 
    bus.getBusiness(req, function(data) { 
     ... 
     done(); 
    }); 
    }); 

});