0

コントラクトに .json ファイルとしてアクセスできる状況がありますが、まだ公開されておらず、これが発生するまでに時間がかかる場合があります。検証テストの作成を開始したいので、このファイルを手動で pact/フォルダーの下に貼り付けて、オンライン ブローカーではなく接続することを考えていましたか? このようなことをどこかで見たことがあると思います。これは本当に可能ですか?もしよろしければ、サンプルをいただけませんか?どうもありがとう。

4

1 に答える 1

2

ここで自分の質問に答えます。target/pacts フォルダーの下にコンシューマーによって作成された .json ファイルを生成するか手動で貼り付け、ブローカー パスの代わりに @PactFolder("target/pacts") アノテーションを追加することで可能です。

ここに画像の説明を入力

import au.com.dius.pact.provider.junit.loader.PactFolder;
import au.com.dius.pact.provider.junit.Provider;
import au.com.dius.pact.provider.junit.State;
import au.com.dius.pact.provider.junit5.HttpsTestTarget;
import au.com.dius.pact.provider.junit5.PactVerificationContext;
import au.com.dius.pact.provider.junit5.PactVerificationInvocationContextProvider;
import org.apache.http.HttpRequest;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.TestTemplate;
import org.junit.jupiter.api.extension.ExtendWith;


import static com.hmhco.cp.config.Constants.*;

@Provider("UPDATE")
@PactFolder("target/pacts")
public class PactProviderTest {

@TestTemplate
@ExtendWith(PactVerificationInvocationContextProvider.class)
void pactTestTemplate(PactVerificationContext context, HttpRequest request) {
    request.addHeader("Authorization", AUTHORIZATION_TOKEN);
    context.verifyInteraction();
}

@BeforeEach
void before(PactVerificationContext context) {
    context.setTarget(new HttpsTestTarget(BASE_URL, 443, "/update/v1/lastUpdateSummary"));
}

@State("v1/lastUpdateSummary")
public void sampleState() {
    getAuthorizationToken("teacher");
}

}

PS:これが使用されているインポートであることを確認してください:

import au.com.dius.pact.provider.junit.loader.PactFolder;
于 2020-07-08T12:50:11.273 に答える