我正在尝试在我的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支持开箱即用。
我会在这里留下这个问题,希望有人发表一个澄清事情的精彩答案:)。
答案 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';