Я написал небольшой скрипт, который временно решит эту проблему:
fix.js
const folder = "pacts" // folder with tests
const fs = require("fs")
try {
fs.readdirSync(folder).forEach(fileName => {
const fullPath = `${folder}/${fileName}`
const json = JSON.parse(fs.readFileSync(fullPath).toString())
json.interactions = json.interactions.map((el) => {
if (Array.isArray(el.providerState)) {
el.providerStates = el.providerState
delete el.providerState
}
return el
})
json.metadata.pactSpecification.version = "3.0.0" // first create tests with specification 2, since matchers are not supported in version 3
fs.writeFileSync(fullPath, JSON.stringify(json))
});
} catch (e) {
console.error(e)
}
Для использования выполните команду $
node fix
Или добавить к package.json
, к scripts
объекту, что-то вроде этого:
package.json
...
"scripts": {
"test:pact": "jest --config ./pact_jest.config.js && node ./fix.js",
"publish:pact": "node ./publish.js"
}
...