Ember.js 从插件项目单元测试助手时遇到问题

Ember.js 从插件项目单元测试助手时遇到问题,ember.js,ember-cli,ember-qunit,Ember.js,Ember Cli,Ember Qunit,余烬cli: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

余烬cli: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
ember test
这就是输出:

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 g helper-test title-case
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'
更新 我尝试将以下内容改为“dummy”,而不是自动生成的“样板文件”,并删除了花括号

//import {
//  titleCase
//} from 'dummy/helpers/title-case';
import titleCase from 'dummy/helpers/title-case';
它现在进一步深入到测试方法中,但在使用以下命令调用
标题酶(42)
时失败:

TypeError: Cannot read property 'isUnbound' of undefined
更新#2 我可以让它工作,但它很难看,我需要访问
\u rawFunction
属性并更改import语句的格式

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生成的原始测试不起作用。

帮助程序测试生成器希望帮助程序文件具有特定的格式,如果生成帮助程序,您可以看到:

ember generate helper hello
这将生成文件app/helpers/hello.js,其中包含

import Ember from 'ember';

export function hello(input) {
  return input;
};

export default Ember.Handlebars.makeBoundHelper(hello);
它还将在tests/unit/helpers/hello-test.js中为上述内容生成一个单元测试

import {
  hello
} from 'ember-empty/helpers/hello';

module('HelloHelper');

// Replace this with your real tests.
test('it works', function() {
  var result = hello(42);
  ok(result);
});
换句话说,除了绑定的帮助程序外,帮助程序测试生成器还希望您导出原始函数本身