首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有麻烦的单元测试来自addon项目的助手

有麻烦的单元测试来自addon项目的助手
EN

Stack Overflow用户
提问于 2014-11-01 07:15:28
回答 1查看 2.7K关注 0票数 3

https://github.com/stefanpenner/ember-cli/issues/2421

成员-cli: 1.2

我有一个样板广告项目,有一个标题-案例助手如下:

我的助手app/helpers/title-case.js

代码语言:javascript
复制
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;
    }

});

我使用烬-cli为助手生成了测试。

代码语言:javascript
复制
ember g helper-test title-case

这是产出:

代码语言:javascript
复制
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);
});

现在运行成员-cli的测试。

代码语言:javascript
复制
ember test

获取以下错误:

代码语言:javascript
复制
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'

更新

我尝试将下面的内容改为“虚拟”,而不是自动生成的“样板”,并去掉了花括号。

代码语言:javascript
复制
//import {
//  titleCase
//} from 'dummy/helpers/title-case';
import titleCase from 'dummy/helpers/title-case';

它现在深入到测试方法中,但是在调用titleCase(42)时失败了:

代码语言:javascript
复制
TypeError: Cannot read property 'isUnbound' of undefined

更新#2

我能够做到这一点,但它很难看,我需要访问._rawFunction属性并更改导入语句的格式。

代码语言:javascript
复制
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');
});

我仍然感到困惑,为什么最初产生的测试成员-cli没有工作。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-01 13:49:04

helper-test生成器期望助手文件具有分区格式,如果生成助手,您可以看到该格式:

代码语言:javascript
复制
ember generate helper hello

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

代码语言:javascript
复制
import Ember from 'ember';

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

export default Ember.Handlebars.makeBoundHelper(hello);

它还将在test / unit /helpers/hello-test.js中为上述内容生成一个单元测试。

代码语言:javascript
复制
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);
});

换句话说,帮助测试生成器希望除了绑定助手之外,还导出原始函数本身。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26687039

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档