chai-jscodeshift
chai-jscodeshift 提供了一个自定义断言,用于 jscodeshift 检查给定输入 fixture 在经过测试中的转换器转换后是否与输出 fixture 相匹配。
安装
import chai from 'chai';
import chaiJSCodeShift from 'chai-jscodeshift';
chai.use(chaiJSCodeShift());
使用
import myTransform from '../src/my-transform';
describe('myTransform', () => {
it('transforms properly', () => {
expect(myTransform).to.transform('my-fixture');
// or
assert.transforms(myTransform, 'my-fixture');
});
});
自定义
默认情况下,此插件会在工作目录中的 fixture 中查找 fixture。 您可能需要通过设置 fixture 出现的目录来进行自定义。
import path from 'path';
chai.use(chaiJSCodeShift({
fixtureDirectory: path.join(__dirname, 'fixtures')
}));
当您声明想要让转换器转换特定 fixture 时,此插件将查找一个名为 <fixtureName>.input.js
的文件,该文件相对于上面声明的 fixtureDirectory
。 它将读取此文件,使用您的转换器转换内容,并将其与名为 <fixtureName>.output.js
的文件进行比较,该文件相对于 fixture 目录。 您可以通过在选项中传递自定义 inputFixturePath
或 outputFixturePath
来自定义这两个路径中的任何一个(这两个路径都接受两个参数,fixture 名称和 fixture 目录的根目录)
chai.use(chaiJSCodeShift({
fixtureDirectory: path.join(__dirname, 'fixtures'),
inputFixturePath(fixtureName, fixtureDirectory) {
return path.join(fixtureDirectory, 'input', `${fixtureName}.js`);
},
inputFixturePath(fixtureName, fixtureDirectory) {
return path.join(fixtureDirectory, 'output', `${fixtureName}.js`);
},
}));
您还可以设置自定义选项,这些选项将在每次调用时作为第三个参数传递给您的转换器,方法是使用 transformOptions
配置选项。
chai.use(chaiJSCodeShift({
transformOptions: {
printOptions: {space: 'single'},
},
}));