Java tüketicisi ve JavaScript sağlayıcısı için sözleşme testi

Sep 01 2020

Birinin diğerinin tüketicisi olduğu 2 hizmetimiz var. Tüketici Java ile yazılmıştır ve sağlayıcı JavaScript ile yazılmıştır.

Tüketici tarafında, pact-jvm kullanarak bir tüketici sözleşmesi testi tanımladık ve bir sözleşme oluşturabiliyoruz. Bu sözleşmede yanıt şu şekilde tanımlanmıştır:

"response": {
  "status": 200,
  "headers": {
    "Content-Type": "application/json"
  },
  "body": [
    "test"
  ]
},

Sağlayıcımızda şimdi pact-js kullanarak bir sağlayıcı-sözleşme-testi tanımlamaya çalışıyoruz, ancak pact-js'de MessageProviderPactsözleşmeyi doğrulamak için a kullandığımız bir problemle karşılaşıyoruz . Ancak testi çalıştırırken vücudun aşağıdaki gibi bir içerik özniteliğinde olması beklenir:

Key: - is expected 
            + is actual 
       Matching keys and values are not shown

       -[
       -  "test"
       -]
       +{
       +  "contents": {
       +    "statusCode": 200,
       +    "body": "[test]"
       +  }
       +}

Anlaşma doğrulaması için kullanılan kod

const p = new MessageProviderPact({
        messageProviders: {
            '': handler
        },
        provider: 'provider-service',
        pactUrls: [
            path.resolve(
                process.cwd(),
                'pacts',
                'consumer-service-provider-service.json'
            )
        ]
    });

Bunu çözmek için herhangi bir fikir var mı? Tüketici tarafında içerik anahtarı ile benzer bir mesaj yapısı kullanmak mümkün müdür? Veya sağlayıcı tarafında başka bir şekilde çözebilir miyiz

Yanıtlar

MatthewFellows Sep 02 2020 at 06:58

MessageProviderPactHTTP etkileşimleri değil, ileti kuyruğu türü etkileşimleri içindir. Sanırım standart Verifiersınıfa ihtiyacın var (https://github.com/pact-foundation/pact-js/#provider-api-testing):

const { Verifier } = require('@pact-foundation/pact');
let opts = {
  ...
};

new Verifier(opts).verifyProvider().then(function () {
    // do something
});