https://github.com/stefanpenner/ember-cli/issues/2421
エンバークリ: 1.2
次のようなタイトルケースヘルパーを持つボイラープレートアドオンプロジェクトがあります。
私のヘルパーapp/helpers/title-case.js
import Ember from 'ember';
export default Ember.Handlebars.makeBoundHelper(function(string) {
if (typeof string === 'string') {
//replace dashes with spaces
var str = string.dasherize().replace(/-/g, ' ');
return str.replace(/\w\S*/g, function(word){
return word.charAt(0).toUpperCase() + word.substr(1).toLowerCase();
});
} else {
return string;
}
});
ember-cli を使用してヘルパーのテストを生成しました
ember g helper-test title-case
これは出力でした:
import {
titleCase
} from 'boilerplate/helpers/title-case';
module('TitleCaseHelper');
// Replace this with your real tests.
test('it works', function() {
var result = titleCase(42);
ok(result);
});
ember-cli からテストを実行中
ember test
次のエラーが発生します。
Build failed.
File: dummy/tests/unit/helpers/title-case-test.js
ENOENT, no such file or directory '/home/me/git/ember/boilerplate/tmp/tree_merger-tmp_dest_dir-PL6HFkuw.tmp/boilerplate/helpers/title-case.js'
Error: ENOENT, no such file or directory '/home/me/git/ember/boilerplate/tmp/tree_merger-tmp_dest_dir-PL6HFkuw.tmp/boilerplate/helpers/title-case.js'
アップデート
自動生成された「ボイラープレート」の代わりに以下を「ダミー」に変更して、中括弧を削除してみました。
//import {
// titleCase
//} from 'dummy/helpers/title-case';
import titleCase from 'dummy/helpers/title-case';
さらにテストメソッドに入りますが、次のように呼び出したときに失敗しましたtitleCase(42)
:
TypeError: Cannot read property 'isUnbound' of undefined
更新 #2
私はこれを機能させることができましたが、それは醜いです。._rawFunction
プロパティにアクセスして、インポートステートメントの形式を変更する必要がありました。
import titleCaseHelper from 'dummy/helpers/title-case';
var titleCase = titleCaseHelper._rawFunction;
module('TitleCaseHelper');
test('Title case lower case letters', function() {
var result = titleCase('hello world');
equal(result, 'Hello World');
});
ember-cli によって生成された元のテストが機能しなかった理由について、私はまだ混乱しています。