1

如何验证ScalaMock存根的send(Email)方法是否已被调用?play.api.libs.mailer.MailerAPI

class SomeTests extends FunSuite with MockFactory {
  [...]
  val expEmail = play.api.libs.mailer.Email(
    "Test",
    "admin@test.com",
    Seq("user@test.com"),
    bodyHtml = Some(s"""<html>
        | <body>
        |   Hello
        | </body>
        | </html>
        | """.stripMargin)
  )
  val mailerFake = stub[MailerAPI]
  // Won't compile
  (mailerFake.send _).verify(expEmail)
  [...]
}

编译上述代码时,出现以下错误:

Error:(29, -1) Play 2 Compiler: 
 /Users/arve/Projects/gradlehub/test/ui/pub/RegistrationTest.scala:29: ambiguous reference to overloaded definition,
 both method send in trait MailerAPI of type (data: play.libs.mailer.Email)String
 and  method send in trait MailerAPI of type (data: play.api.libs.mailer.Email)String
4

1 回答 1

4

由于send编译错误已经说过重载,因此您需要一种消除歧义的方法,您可以通过明确说明所需的类型来消除歧义send

(mailerFake.send: (play.api.libs.mailer.Email => String)).verify(expEmail)
于 2015-01-27T16:57:05.703 回答