Java 소비자 및 JavaScript 공급자에 대한 계약 테스트
Sep 01 2020
하나가 다른 하나의 소비자 인 2 개의 서비스가 있습니다. 소비자는 Java로 작성되고 공급자는 JavaScript로 작성됩니다.
소비자 측에서는 pact-jvm을 사용하여 소비자 계약 테스트를 정의했으며 계약을 생성 할 수 있습니다. 이 계약에서 응답은 다음과 같이 정의됩니다.
"response": {
"status": 200,
"headers": {
"Content-Type": "application/json"
},
"body": [
"test"
]
},
공급자에서 우리는 이제 pact-js를 사용하여 provider-contract-test를 정의하려고 시도하고 있지만 pact-js MessageProviderPact에서 계약을 확인하기 위해 a 를 사용하는 문제에 부딪 혔 습니다. 그러나 테스트를 실행할 때 본문은 다음과 같은 콘텐츠 속성에있을 것으로 예상됩니다.
Key: - is expected
+ is actual
Matching keys and values are not shown
-[
- "test"
-]
+{
+ "contents": {
+ "statusCode": 200,
+ "body": "[test]"
+ }
+}
계약 확인에 사용되는 코드
const p = new MessageProviderPact({
messageProviders: {
'': handler
},
provider: 'provider-service',
pactUrls: [
path.resolve(
process.cwd(),
'pacts',
'consumer-service-provider-service.json'
)
]
});
이 문제를 해결하는 방법에 대한 아이디어가 있습니까? 소비자 측에서 콘텐츠 키로 유사한 메시지 구조를 사용할 수 있습니까? 또는 공급자 측에서 다른 방법으로 해결할 수 있습니까?
답변
MatthewFellows Sep 02 2020 at 06:58
MessageProviderPactHTTP 상호 작용이 아니라 메시지 큐 유형 상호 작용을위한 것입니다. 표준 Verifier수업 이 필요하다고 생각합니다 (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
});