我看了http://yeoman.io/authoring/testing.html的官方指南
但它让我有点困惑。
helpers.run
返回一个运行的上下文,我可以在其上调用方法等。
但我很困惑如何测试文件是否存在(assert.file
)
我的印象是helpers.run
将在内存或文件系统上创建文件。但assert.file
总是失败。
在运行测试之前,文件系统上存在的文件不会失败。
当我运行我的生成器(你的我的生成器)时,我看到文件已经创建。
如何测试文件是否已创建? 到目前为止,这是我的代码无效。
我正在使用茉莉花进行测试。
let helpers = require('yeoman-test');
let assert = require('yeoman-assert');
describe('generator:test', function () {
let path = require('path');
beforeEach(function () {
console.log(path.join(__dirname, '../generators/app'));
// The object returned acts like a promise, so return it to wait until the process is done
helpers.run(path.join(__dirname, '../generators/app'))
.withPrompts({
name: 'test',
appName: 'test',
appTitle: 'test',
apiEndpoint: 'http://localhost'
});
})
it('all config files', function () {
assert.file(#arrayOfFiles#);
});
});
答案 0 :(得分:0)
我知道这是一个古老的问题,但是由于它在测试Yeoman发电机的Google搜索结果中排名很高,因此尝试回答它似乎很有用:
您的beforeAll需要返回helpers.run返回的Promise。否则,测试运行程序将不会在运行实际测试之前等待足够长的时间,并且文件将不存在。因此,您的示例应如下所示:
let helpers = require('yeoman-test');
let assert = require('yeoman-assert');
describe('generator:test', function () {
let path = require('path');
beforeEach(function () {
return helpers.run(path.join(__dirname, '../generators/app'))
.withPrompts({
name: 'test',
appName: 'test',
appTitle: 'test',
apiEndpoint: 'http://localhost'
});
})
it('all config files', function () {
assert.file(#arrayOfFiles#);
});
});