如何在scala中使用mockito存根函数参数



我有下面的代码,使用蛋糕模式。

trait CropRepositoryComponent {
   val cropRepository:CropRepository = new CropRepository
   class CropRepository extends DBAccess{
        def getAll(f:Crops.type => Column[Boolean],pageNum:Int = 1,noOfRows:Int = 10):Either[String,List[Crop]] ={
            database withSession {
               ... 
            }
        }
        def getFirst(f:Crops.type => Column[Boolean]):Either[String,Crop] = {
            database withSession {
                ....
            }
        }
   }
}

和相关的测试规范

class CropRepositorySpec extends Specification with CropRepositoryComponent{
"CorpRepository #getAll " should {
    "return all active crops " in {
        val crops = cropRepository.getAll(?,anyInt(),anyInt()) //How to stub the first parameter using mockito matchers?
    }
}

}

我如何存根的第一个参数的方法getAll使用模拟匹配器?

我设法使用anyObject - matcher来匹配函数参数。

在你的例子中应该是这样的:

class CropRepositorySpec extends Specification with CropRepositoryComponent{
"CropRepository #getAll " should {
    "return all active crops " in {
        val crops = cropRepository.getAll(anyObject(),anyInt(),anyInt()) //How to stub the first parameter using mockito matchers?
    }
}

它也需要是匹配器

eq("How to stub this parameter using mockito ?")

查看Matchers文档:

警告:

如果你使用参数匹配器,所有的参数必须由匹配器提供。

E。G:(示例显示验证,但同样适用于存根):

verify(mock). someemethod (anyInt(), anyString(), eq("第三个参数"));//以上是正确的- eq()也是一个参数匹配器

verify(mock). someemethod (anyInt(), anyString(), "第三个参数");//上面是错误的——会抛出异常,因为第三个参数没有给出参数匹配器。

相关内容

  • 没有找到相关文章

最新更新