无法匹配测试用例中的异常实例

问题描述

以下代码在缺少配置的情况下返回异常的实例

if (host == "" || redirectUrl == "" || successUrlParameter == "" || failUrlParameter == "") {
      //checktest-USerTransactionService-finishResetCredentials-return exception if host configuration parameters are present
      (Some(MissingConfigurationException()),errorRediectedUrl,None)
    } else {...}

我正在测试它,并像下面这样匹配它

errorThrown mustBe Some(MissingConfigurationException())

即使值看起来相等,测试用例也会失败。

Expected :Some(utilities.MissingConfigurationException: Server Error. Missing Configuration)
Actual   :Some(utilities.MissingConfigurationException: Server Error. Missing Configuration)

我应该如何比较预期值与实际值?

解决方法

例外是按引用而不是按值进行比较。因此,两个相同的值将始终是不同的,除非它们是相同的实例。
因此,您必须检查实例的类。

但是。 Scalatest 为检查类和使用选项提供了更好的语法。

errorThrown.value shouldBe a [MissingConfigurationException]

参考: