在测试中从 ember cli 插件访问虚拟项目的根路径
access dummy project's root path from ember cli addon in tests
场景:我想知道访问使用插件的项目的根路径的正确方法 - 在测试时也可以使用...
例如,插件:
// ember-cli-myaddon/index.js
{
...
contentFor(name) {
if (name ==='body') {
var filePath = path.join(this.app.project.root, 'app/some-file.html')
var file = fs.readFileSync(filePath);
return [file];
}
},
...
}
^ 在实际项目中使用插件时有效。
然而,当我 运行 测试插件时,this.app.project.root
是 ~/ember-cli-myaddon/app/some-file.html
当我期望(需要)它是~/ember-cli-myaddon/tests/dummy/app/some-file.html
经过一些 ember 插件挖掘后,我发现了 ember-cli-mirage 中使用的一个很棒的 sol'n,https://github.com/samselikoff/ember-cli-mirage/blob/master/ember-cli-build.js
要点是文件路径在插件的 ember-cli-build.js 中指定,插件从 属性, 空白时默认为 this.app.project.root
.
例如
// ember-cli-myaddon/index.js
// added this
included: function() {
this.addonPath = this.app.options['myaddon']['directory'] || 'app';
},
// modified filePath
contentFor(name) {
if (name ==='body') {
var filePath = path.join(this.app.project.root, this.addonPath, 'some-file.html');
var file = fs.readFileSync(filePath);
return [file];
}
}
然后在插件的 ember-cli-build.js 文件中,我们指定虚拟应用程序的目录:
// ember-cli-build.js
/* global require, module */
var path = require('path');
var EmberApp = require('ember-cli/lib/broccoli/ember-addon');
module.exports = function(defaults) {
var app = new EmberApp(defaults, {
'myaddon': {
directory: path.join('tests', 'dummy')
}
});
return app.toTree();
};
现在,插件测试寻找 some-file.html at:
ember-cli-myaddon/tests/dummy/app/some-file.html
在真实项目中,some-file.html 位于:
your-project/app/some-file.html
此外,您还可以获得允许用户在其 ember-cli-build.js 文件中配置文件路径的好处! win/win/win
场景:我想知道访问使用插件的项目的根路径的正确方法 - 在测试时也可以使用...
例如,插件:
// ember-cli-myaddon/index.js
{
...
contentFor(name) {
if (name ==='body') {
var filePath = path.join(this.app.project.root, 'app/some-file.html')
var file = fs.readFileSync(filePath);
return [file];
}
},
...
}
^ 在实际项目中使用插件时有效。
然而,当我 运行 测试插件时,this.app.project.root
是 ~/ember-cli-myaddon/app/some-file.html
当我期望(需要)它是~/ember-cli-myaddon/tests/dummy/app/some-file.html
经过一些 ember 插件挖掘后,我发现了 ember-cli-mirage 中使用的一个很棒的 sol'n,https://github.com/samselikoff/ember-cli-mirage/blob/master/ember-cli-build.js
要点是文件路径在插件的 ember-cli-build.js 中指定,插件从 属性, 空白时默认为 this.app.project.root
.
例如
// ember-cli-myaddon/index.js
// added this
included: function() {
this.addonPath = this.app.options['myaddon']['directory'] || 'app';
},
// modified filePath
contentFor(name) {
if (name ==='body') {
var filePath = path.join(this.app.project.root, this.addonPath, 'some-file.html');
var file = fs.readFileSync(filePath);
return [file];
}
}
然后在插件的 ember-cli-build.js 文件中,我们指定虚拟应用程序的目录:
// ember-cli-build.js
/* global require, module */
var path = require('path');
var EmberApp = require('ember-cli/lib/broccoli/ember-addon');
module.exports = function(defaults) {
var app = new EmberApp(defaults, {
'myaddon': {
directory: path.join('tests', 'dummy')
}
});
return app.toTree();
};
现在,插件测试寻找 some-file.html at:
ember-cli-myaddon/tests/dummy/app/some-file.html
在真实项目中,some-file.html 位于:
your-project/app/some-file.html
此外,您还可以获得允许用户在其 ember-cli-build.js 文件中配置文件路径的好处! win/win/win