Я хочу подружиться Pact JS и Cypress .
Дело в том, что интеграционные тесты Cypress выполняются внутри браузера, среда узла недоступна в нем, таким образом, я не могу использовать Pact объекты где-либо в тестах.
Через задачу Cypress
Тем не менее я могу реализовать задачу Cypress , и переместите весь код, связанный с кипарисами, в эту задачу и установите связь через другие задачи Таким образом, поток становится слишком сложным, он требует поддержки жизненного цикла объекта Pact в задаче и дублирования всех сообщений. Вот так:
кипарис / плагины / индекс. js:
const {Pact} = require("@pact-foundation/pact")
module.exports = (on) => {
on("task", {
createPactServer() {
return new Pact({
consumer: "TodoApp",
provider: "TodoService",
port: 8501,
// log: path.resolve(process.cwd(), "logs", "pact.log"),
// dir: path.resolve(process.cwd(), "pacts"),
logLevel: "info",
})
}
})
}
кипарис / интеграция / тест. js:
describe("Login page", (): void => {
it("should log in", (): void => {
let a = cy.task('createPactServer', );
// do rest
// manage verify
// handle errors from verify
// shutdown pact server
// handle all other lifecycle events.
});
});
Я бы хотел избежать этого! !!
Через кипарисовый маршрут
Также кипарис поставляется с маршрутом , который позволяет имитировать сеть и заглушки ответы. Интересно, есть ли способ их смешать, поэтому я бы даже не слушал порт с Pact-сервером. Я не нашел способа подумать, что я не слишком долго это расследовал. Есть также pact-web, который кажется мне только фиктивной частью без http-сервера, но нет никакой необходимости делать c при интеграции его с API. Также я обнаружил, что в pact используются файлы ruby, что, вероятно, делает невозможным использование без http-сервера в env-узлах, отличных от узлов.
Интересно, попытался ли бы в любом случае соединить их вместе и что было бы предпочтительный способ.