Sobes.tech
Middle

Que outras ferramentas existem para testes de contrato?

sobes.tech IA

Resposta da IA

  • Pact: Ferramenta popular para testar contratos de consumidores (CDC). Suporta múltiplas linguagens e plataformas.
  • Spring Cloud Contract: Ferramenta para testar contratos no ecossistema Spring. Pode ser usada para CDC e testes de contrato do lado do produtor.
  • Swagger/OpenAPI: Especificação que descreve a API. Pode ser usada para gerar stubs de clientes e validar respostas.
  • JSON Schema: Linguagem para descrever a estrutura de documentos JSON. Usada para validação de contratos.
  • Protobuf (Protocol Buffers): Formato de serialização que pode ser usado para definir contratos entre serviços.
  • gRPC: Framework RPC usando Protobuf para definir contratos de serviço.

Comparação entre Pact e Spring Cloud Contract:

Característica Pact Spring Cloud Contract
Abordagem CDC (Contratos orientados pelo consumidor) CDC e testes de contrato do lado do produtor
Ecossistema Independente de linguagem e framework Orientado ao ecossistema Spring
Geração de stubs/mocks Sim (lado do consumidor) Sim (lado do produtor)
Broker de contratos Pact Broker Git, Maven Central e outros
Suporte de protocolos HTTP, mensagens HTTP, mensagens

Exemplo de uso do Pact (DSL):

// Definição de contrato do lado do consumidor em Ruby usando Pact
Pact.service_consumer "Serviço do Consumidor" do
  has_pact_with "Serviço do Provedor" do
    mock_service "mock_servico_provedor" do
      port 1234
    end
  end
end

describe "GET /data" do
  before do
    mock_servico_provedor.upon_receiving "uma requisição por dados" do
      with(method: :get, path: "/data")
    end.will_respond_with(
      status: 200,
      headers: { "Content-Type" => "application/json" },
      body: { message: like("Olá,") } // Usando um matcher
    )
  end

  it "deve receber dados do provedor" do
    # Seu código consumidor fazendo a requisição
    # ...
    expect(@response.status).to eq(200)
    expect(@response.body).to include("Olá,")
  end
end