2015-05-04 2 views
0

Я пытаюсь использовать sinon в своем приложении ember-cli, и я не могу понять, как его импортировать. У меня есть оператор импорта в спецификации:Как я могу импортировать sinon в тест ember-cli?

import { sinon } from 'sinon'; 

, а затем я пытаюсь использовать Sinon в тесте:

it('finds the todo model', function() { 
    var store = this.subject().store; 
    var spy = sinon.spy(store, 'find'); 

    this.subject().model(); 

    expect(spy).to.have.been.called; 
}); 

Однако, когда я бегу ember test из командной строки я получаю эту ошибку:

not ok 8 PhantomJS 1.9 - TestLoader Failures my-app/tests/unit/routes/application-test: could not be loaded 
--- 
    message: > 
     Could not find module `sinon` imported from `my-app/tests/unit/routes/application-test` 
    stack: > 
     Error: Could not find module `sinon` imported from `my-app/tests/unit/routes/application-test` 
      at requireFrom (http://localhost:7357/assets/vendor.js:119) 
      at reify (http://localhost:7357/assets/vendor.js:106) 
      at http://localhost:7357/assets/vendor.js:149 
      at tryFinally (http://localhost:7357/assets/vendor.js:30) 
      at http://localhost:7357/assets/vendor.js:156 
      at http://localhost:7357/assets/test-loader.js:29 
      at http://localhost:7357/assets/test-loader.js:21 
      at http://localhost:7357/assets/test-loader.js:40 
      at http://localhost:7357/assets/test-support.js:13918 
    Log: > 
... 

Единственное, что я заметил, что ember-sinon имеет очень легкий след в каталоге bower_components/:

$ls bower_components/sinon/ 
index.js 

Я попытался изменить линию импорта на import { sinon } from 'sinon/index';, но это не сработало.

Любая помощь была бы принята с благодарностью. Я очень новичок в модулях ember-cli, bower и es6, поэтому ссылки на фон на этих фрагментах будут очень благодарны. Благодаря!

ответ

1

OK, после RTFMing за минуты, я нашел ответ прямо в разделе test assets документации ember-cli.

Установка:

ember install ember-sinon 

^это вызовет ошибку, поэтому я побежал генератор вручную.

ember generate ember-sinon 

Затем, импорт Sinon в Brocfile:

var isProduction = EmberApp.env() === 'production'; 
if (!isProduction) { 
    app.import(app.bowerDirectory + '/sinon/index.js', {type: 'test'}); 
} 

Теперь вы можете использовать sinon.stub/spy/mock в своих спецификациях, но вы все равно получите jshint ошибку о Синоне не определено. Я исправил это, добавив:

/* global sinon */ 

наверху спецификации. Похоже, вы должны иметь возможность объявить это глобально в файле jshintrc, но я еще не понял этого.

+2

Чтобы избавиться от ошибки jshint, вы должны добавить «sinon» в массив predef в «tests/.jshintrc». Не весь проект «.jshintrc» !! Должен выглядеть примерно так: {"predef": ["sinon"]}; – phlppn

+0

спасибо @phlppn, что было точно связано с jshint. – spinlock

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