0

ember-cli アプリで sinon を使用しようとしていますが、インポート方法がわかりません。仕様に import ステートメントがあります。

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: >
...

私が気づいたことの 1 つは、ディレクトリember-sinon内のフットプリントが非常に小さいことです。bower_components/

$ls bower_components/sinon/
index.js

インポート行をに変更しようとしましたimport { sinon } from 'sinon/index';が、それもうまくいきませんでした。

どんな助けでも大歓迎です。私は ember-cli、bower、および es6 モジュールに非常に慣れていないため、これらの作品の背景へのリンクをいただければ幸いです。ありがとう!

4

1 に答える 1

1

OK、数分間 RTFM を行った後、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'});
}

これで、spec でを使用できますがsinon.stub/spy/mock、sinon が定義されていないという jshint エラーが引き続き発生します。追加してこれを修正しました:

/* global sinon */

スペックの頂点へ。jshintrc ファイルでこれをグローバルに宣言できるはずですが、まだわかりません。

于 2015-05-04T21:58:33.783 に答える