如何在我的Ember单元测试中使用库?

时间:2015-08-31 13:32:23

标签: ember.js ember-cli

我正在尝试在我的Ember单元测试中使用库(chance.js),但我似乎无法在我的测试中导入它。

到目前为止,我已尝试使用NPM(有和没有ember-browserify),Bower(尝试使用app.import中的ember-cli-build.js来电。

无论我做什么,我似乎都无法访问chance函数/模块。

任何帮助都会非常感激。如果有人能指出我在他们的单元测试中使用chance.js的Ember项目,那么最高分将会出现。

如果可能,在您的答案中,对适当的依赖管理进行简要说明将非常有帮助。根据我的阅读,似乎NPM可能是首选,因为Ember项目正在寻求离开Bower,见here

此外,如果有人知道任何有用的文章(最新也是一个加号),请随时在评论中提及。

谢谢!

修改: 我相信我看到的一些问题与使用“匿名”AMD模块的机会有关,Ember的加载程序不支持。我玩了一会儿,但最后还是使用ember-faker插件,因为John Otander支持开箱即用。

我会在这里留下这个问题,希望有人发表一个澄清事情的精彩答案:)。

2 个答案:

答案 0 :(得分:1)

一般问题:

  • " ......似乎NPM可能是首选,因为Ember项目正在寻求远离Bower ......"。我也读了它并得出了同样的结论。

  • "哪种依赖管理是合适的......"我有一些模块(lodash,d3,supergroup,getstream,现在偶然)的练习,每次ember-browserify都能正常工作。

关于chance:看起来它适用于ember-browserify

//console
npm install --save-dev ember-browserify
npm install --save-dev chance

//using in application controller
import Ember from 'ember';
import Ch from 'npm:chance';

var chance = new Ch();

export default Ember.Controller.extend({
  chanceString: null,
  chanceBool: chance.bool()
});

// using in application controller test
import Ch from 'npm:chance';
var chance = new Ch();

test('can use chance in tests', function(assert) {
    var controller = this.subject();
    controller.set('chanceString', chance.phone());
    assert.ok(controller.get('chanceString'));
});

查看工作示例here

答案 1 :(得分:1)

Ember CLI now supports Anonymous AMD modules。在ember-cli-build.js文件中,使用带有AMD转换的app.import(),为匿名模块提供如下名称:

app.import('bower_components/chance/dist/chance.min.js', {
  using: [
    { transformation: 'amd', as: 'chance' }
  ]
});

然后,您可以在整个应用中导入它并进行如下测试:

import chance from 'chance';