2016-09-08 4 views
3

Привет, Я пытаюсь высмеять модель внутри моего контроллера, используя proxyquire. Но по какой-то причине, когда вы пытаетесь ввести макет, вызывается исходный файл.Proxyquire вызывает исходный файл вместо stub

Это как моя модель в настоящее время требуется внутри контроллера:

var Product = require('./product.model'); 

И это, как я, пытаясь окурок от модели

var proxyquire = require('proxyquire').noCallThru().noPreserveCache(); 
    var productsStub = {findAsync: sinon.stub()}; 
    productsStub.findAsync.resolves(mockProducts); 
    var mockProducts = [{_id:'0001',title: 'title', price: 123, description: 'le description'}]; 
    var productController = proxyquire('./product.controller',{'./product.model':productsStub}); 

но когда я запускаю моих тестов я получаю эта ошибка

Running "mochaTest:unit" (mochaTest) task 
>> Mocha exploded! 
>> OverwriteModelError: Cannot overwrite `Product` model once compiled. 
>>  at Mongoose.model (/Users/victor/Documents/projects/estudo/mean/meanshop/node_modules/mongoose/lib/index.js:360:13) 
>>  at Object.<anonymous> (/Users/victor/Documents/projects/estudo/mean/meanshop/server/api/product/product.model.js:15:27) 
>>  at Module._compile (module.js:409:26) 
>>  at normalLoader (/Users/victor/Documents/projects/estudo/mean/meanshop/node_modules/babel-core/lib/api/register/node.js:199:5) 
>>  at Object.require.extensions.(anonymous function) [as .js] (/Users/victor/Documents/projects/estudo/mean/meanshop/node_modules/babel-core/lib/api/register/node.js:216:7) 
>>  at Module.load (module.js:343:32) 
>>  at Function.Module._load (module.js:300:12) 
>>  at Module.require (module.js:353:17) 
>>  at require (internal/module.js:12:17) 
>>  at Object.<anonymous> (/Users/victor/Documents/projects/estudo/mean/meanshop/server/api/product/product.model.spec.js:1:15) 
>>  at Module._compile (module.js:409:26) 
>>  at normalLoader (/Users/victor/Documents/projects/estudo/mean/meanshop/node_modules/babel-core/lib/api/register/node.js:199:5) 
>>  at Object.require.extensions.(anonymous function) [as .js] (/Users/victor/Documents/projects/estudo/mean/meanshop/node_modules/babel-core/lib/api/register/node.js:216:7) 
>>  at Module.load (module.js:343:32) 
>>  at Function.Module._load (module.js:300:12) 
>>  at Module.require (module.js:353:17) 
>>  at require (internal/module.js:12:17) 
>>  at /Users/victor/Documents/projects/estudo/mean/meanshop/node_modules/mocha/lib/mocha.js:220:27 
>>  at Array.forEach (native) 
>>  at Mocha.loadFiles (/Users/victor/Documents/projects/estudo/mean/meanshop/node_modules/mocha/lib/mocha.js:217:14) 
>>  at MochaWrapper.run (/Users/victor/Documents/projects/estudo/mean/meanshop/node_modules/grunt-mocha-test/tasks/lib/MochaWrapper.js:51:15) 
>>  at /Users/victor/Documents/projects/estudo/mean/meanshop/node_modules/grunt-mocha-test/tasks/mocha-test.js:86:20 

Мой вопрос, почему я получаю это, если теоретически исходный модуль products.model.js будет не называть.

ответ

1

proxyquire НЕ ЗАПУСКАЕТ НЕ перечисленные модули, и они потребуются, как обычно, поэтому похоже, что у вас больше зависимостей внутри product.controller, и все они обычно требуются.

Я не могу найти подходящее решение для этой проблемы, кроме предоставления полного заглушки для proxyquire.

 Смежные вопросы

  • Нет связанных вопросов^_^