Невозможно сгенерировать параметры в состоянии (проблема PACT-тестирования) - PullRequest
0 голосов
/ 10 июля 2019

Я использую @ pact-foundation / pact @ latest (для быстрого развертывания моего дела есть простой jest пример)

Используя этот код: enter image description here

Я создал этот файл PACT: enter image description here

Генерируется согласно спецификации 3 (это настройки): enter image description here

Проблема:

Как сделать так, чтобы окончательный файл PACT содержал state params? Как это: enter image description here

Вот пример . Вот только providerStates. Но я бы хотел получить его через официальную библиотеку PACT.

Ответы [ 2 ]

1 голос
/ 10 июля 2019

Это пока невозможно. Pact JS пока не поддерживает полный набор функций спецификации pact v3. См. https://docs.pact.io/feature_support для покрытия возможностей на разных языках.

0 голосов
/ 11 июля 2019

Я написал небольшой скрипт, который временно решит эту проблему:

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"
 }
...
...