首页 > 解决方案 > 带有 URL 的 Scala 测试用例

问题描述

我有一个具有 URL 字段的案例类:


    import java.net.URL

    case class A(a: URL)

我正在写一个测试用例,它有以下断言。result.url 是从案例类中获得的。

result.url should equal(new java.net.URL("https://hostpath/"))

result.url 打印我:

https://主机路径/

我的测试用例失败,说它们不相等。

标签: scalascala-collections

解决方案


当您使用new关键字时,它会一起创建一个新对象,并且它会根据底层 URL 的 equals 实现而失败

result.url.toString should equal(new java.net.URL("https://hostpath/").toString)

如果你看一下 URL 的 equals 方法实现,它看起来像这样,并不像比较文本 URL 部分那么简单。


protected boolean equals(URL u1, URL u2) {
        String ref1 = u1.getRef();
        String ref2 = u2.getRef();
        return (ref1 == ref2 || (ref1 != null && ref1.equals(ref2))) &&
               sameFile(u1, u2);
    }

protected boolean equals(URL u1, URL u2) {
        String ref1 = u1.getRef();
        String ref2 = u2.getRef();
        return (ref1 == ref2 || (ref1 != null && ref1.equals(ref2))) &&
               sameFile(u1, u2);
    }



推荐阅读