Uji kontrak untuk konsumen Java dan penyedia JavaScript
Kami memiliki 2 layanan di mana yang satu adalah konsumen dari yang lain. Konsumen ditulis dalam Java dan penyedia ditulis dalam JavaScript.
Di sisi konsumen, kami telah menetapkan uji kontrak konsumen menggunakan pact-jvm dan kami dapat membuat kontrak. Dalam kontrak ini tanggapannya didefinisikan seperti:
"response": {
"status": 200,
"headers": {
"Content-Type": "application/json"
},
"body": [
"test"
]
},
Di penyedia kami, kami sekarang mencoba untuk menentukan tes kontrak-penyedia menggunakan pact-js tetapi kami mengalami masalah di mana di pact-js kami menggunakan a MessageProviderPactuntuk memverifikasi kontrak. Namun saat menjalankan pengujian, badan diharapkan berada dalam atribut konten seperti ini:
Key: - is expected
+ is actual
Matching keys and values are not shown
-[
- "test"
-]
+{
+ "contents": {
+ "statusCode": 200,
+ "body": "[test]"
+ }
+}
Kode yang digunakan untuk verifikasi pakta
const p = new MessageProviderPact({
messageProviders: {
'': handler
},
provider: 'provider-service',
pactUrls: [
path.resolve(
process.cwd(),
'pacts',
'consumer-service-provider-service.json'
)
]
});
Ada ide tentang cara mengatasi ini? Apakah mungkin untuk menggunakan struktur pesan yang serupa dengan kunci konten di sisi konsumen? Atau dapatkah kita menyelesaikannya dengan cara lain di sisi penyedia
Jawaban
MessageProviderPactadalah untuk interaksi jenis antrian pesan, bukan interaksi HTTP. Saya pikir Anda membutuhkan Verifierkelas standar (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
});