簡體   English   中英

如何更改構造函數參數?

[英]How to change constructor arguments?

我有一個在其構造函數中執行驗證的記錄:

public record Configuration(URI url) {
  public Configuration(URI url) {
    Validate.httpValid(url, "url");
  }
}

httpValid方法在哪里:

public static URI httpValid(final URI value, final String property) {
    try {
      value.toURL();
    } catch (IllegalArgumentException | MalformedURLException e) {
      throw new InvalidPropertyValueException(property, "httpValid", value, Map.of());
    }
    return value;
  }

然而,這未能通過我嘗試創建的測試:

@Test
  void Should_RespectEqualsContract() {
    EqualsVerifier
        .forClass(Configuration.class)
        .withPrefabValues(
            Configuration.class,
            new Configuration(URI.create("http://a.com")),
            new Configuration(URI.create("http://b.com")))
        .verify();
  }

這是因為 EqualsVerifier 試圖創建一個以“x”為參數的對象: InvalidPropertyValueException: The value x is not a valid httpValid as url

你很親近。 你不應該提供你正在測試的類作為預制值; 相反,您需要提供導致問題的參數,如下所示:

@Test
void Should_RespectEqualsContract() {
    EqualsVerifier
        .forClass(Configuration.class)
        .withPrefabValues(
            URI.class,
            URI.create("http://a.com"),
            URI.create("http://b.com"))
        .verify();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM