Spring Cloud Contract 中的负面(依赖于数据库)测试用例

Negative (database dependent) test cases in Spring Cloud Contract

我正在为一个简单的 API 编写 spring 合约,它接收帐号和 returns "good" 响应 如果此帐户存在于数据库中,否则 "bad" 响应。如果导致 "bad" 响应的请求与 "good" 请求的格式相同,我如何在合同中指定 "bad" 响应?

我的Java类:

@PostMapping("/postrequest")
public AccountDto postMethod(@RequestBody FindAccountRequest rq){
  return service.findAccountByNumber(rq);
}

public class FindAccountRequest {
    String accountNumber;
}

public class AccountDto {
  Integer balance;
  Integer errorCode;
}

合同:

Contract.make {
    request {
        description("Existing account — good response")
        method POST()
        url '/postrequest'
        headers { contentType(applicationJson()) }
        body( [ accountNumber: $( regex('[0-9]{20}') ) ] )
    }
    response {
        status 200
        headers { contentType(applicationJson()) }
        body( [balance: anyInteger()] )
    }
}

Contract.make {
    request {
        description("Nonexistent account — bad response")
        method POST()
        url '/postrequest'
        headers { contentType(applicationJson()) }
        body( [ accountNumber: $( regex('[0-9]{20}') ) ])
    }
    response {
        status 200
        headers { contentType(applicationJson()) }
        body( [errorCode: anyInteger()] )
    }
}

要求:

{
    accountNumber: "12345678901234567890"
}

准备两个不同的帐号,一个用于正例,一个用于负例。两个不同的合同