1

2 つの異なるコントラクト mS シナリオがあります。

1st- RequestResponsePact を使用して Pact を作成する直接の mS-mS コントラクト テスト。

2番目-メッセージパクトを使用してパクトを作成しているカフカと呼ばれる2つのマイクロサービスの間にmqがあります。

両方の契約に同じビルダー名を使用することは許可されていません。

コード:

//Contract 1
    @Rule
        public PactProviderRuleMk2  rule= new PactProviderRuleMk2("provider1", "localhost", 8080,PactSpecVersion.V3, this);

        @Pact(provider="provider1", consumer="consumer")
              public RequestResponsePact createPact(PactDslWithProvider builder) {

                 Map<String, String> headers = new HashMap<String, String>();
                 headers.put("Content-Type", "application/json");  

            return builder.given("/Any Given Statement/)
                .uponReceiving("/Any Receiving Statement/")
                    .path("/path/")
                    .method("GET")

                .willRespondWith()
                    .headers(headers)
                    .status(200)
                    .body(/body/)
                .toPact();
                }

         @Test
            @PactVerification({"provider1", "createPact"})
            public void runTest(){
            //Asser test for StatusCode

            }

//Contract 2
     @Rule
        public MessagePactProviderRule messageProviderProcessOrder = new MessagePactProviderRule("provider2",PactSpecVersion.V3);

        @Pact(provider = "provider2", consumer = "consumer") //SameConsumer
            public MessagePact msgresponse(MessagePactBuilder builder) throws ClassNotFoundException, JsonProcessingException, SQLException, InterruptedException {

                    Map<String, String> metadata = new HashMap<String, String>();
                    metadata.put("contentType", "application/json");

                    return builder.given(/Any Given Statement/)

                            .expectsToReceive("/Any Receiving Statement/")
                                .withMetadata(metadata)
                                .withConten(//body/)
                            .toPact();   
        }
         @Test
            @PactVerification({"provider2", "msgresponse"})
            public void test() throws Exception {
            //Asser test for StatusCode
            }

注: これら 2 つのコントラクトを個別に実行すると、Success と Pact ファイルが作成されました。両方を実行すると、以下のエラー メッセージがスローされました。

Error:

Tests run: 2, Failures: 2, Errors: 0, Skipped: 0, Time elapsed: 11.328 sec <<< FAILURE! - in com.att.udas.xxx.yyy.pact.PactTestSuit
test on test(com.att.udas.xxx.yyy.pact.ConsumerMessagePact)(com.att.udas.xxx.yyy.pact.ConsumerMessagePact)  Time elapsed: 1.228 sec  <<< FAILURE!
java.lang.UnsupportedOperationException: Method msgresponse does not conform required method signature 'public RequestResponsePact xxx(PactDslWithProvider builder)'

runTest on runTest(com.att.udas.manage.account.pact.ConsumerMessagePact)(com.att.udas.manage.account.pact.ConsumerMessagePact)  Time elapsed: 0.005 sec  <<< FAILURE!
java.lang.UnsupportedOperationException: Method msgresponse does not conform required method signature 'public RequestResponsePact xxx(PactDslWithProvider builder)'
4

0 に答える 0