chai-jscodeshift
chai-jscodeshift 為 jscodeshift 提供了一個自訂斷言,用於檢查在經過測試的轉換器轉換後,給定的輸入範例是否與輸出範例匹配。
設定
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');
});
});
自訂
預設情況下,此插件將在工作目錄的 fixtures 中查找範例。您可能需要透過設定範例所在的目錄來自訂此設定。
import path from 'path';
chai.use(chaiJSCodeShift({
fixtureDirectory: path.join(__dirname, 'fixtures')
}));
當您宣告要使用轉換器轉換特定範例時,此插件將查找相對於上面宣告的 fixtureDirectory
,名為 <fixtureName>.input.js
的檔案。它將讀取此檔案,使用您的轉換器轉換內容,並將其與相對於範例目錄名為 <fixtureName>.output.js
的檔案進行比較。您可以透過在選項中傳遞自訂的 inputFixturePath
或 outputFixturePath
來客製化這些路徑(兩者都接受兩個參數,即範例名稱和範例目錄的根目錄)。
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'},
},
}));