如何用ScalaMock编写期望?

时间:2015-10-27 10:25:31

标签: scala unit-testing scalamock

我知道这个问题似乎很明显,但我已经尝试了documentation上写的所有内容,而且我不能在任何类上模拟一个方法。

对于此测试,我使用scalaMock 3进行Scala 2.10和ScalaTest 2

DateServiceTest.scala

@RunWith(classOf[JUnitRunner])
class DateServiceTest extends FunSuite with MockFactory{
  val conf = new SparkConf().setAppName("Simple Application").setMaster("local")

  val sc = new SparkContext(conf)

  implicit val sqlc = new SQLContext(sc)

  val m = mock[DateService]
  (m.getDate _).expects().returning(Some(new DateTime)) // Error here
}

DateService.scala

class DateService extends Serializable {

  def getDate(implicit sqlc: SQLContext): Option[DateTime] = {
    Some(new DateTime(loadDateFromDatabase(sqlc)))
  }
}

这对我来说似乎很简单,但期望是把这个错误扔给我

type mismatch; found : Option[org.joda.time.DateTime] required: ? ⇒ ?

我在这里做错了吗?是否有另一种方法来设定方法的期望?

1 个答案:

答案 0 :(得分:0)

您的getDate方法需要SQLContext - 尝试添加wildcard (*)或传递特定的sqlc

(m.getDate _).expects(*).returning(Some(new DateTime))
// Or, alternatively
(m.getDate _).expects(sqlc).returning(Some(new DateTime))