我有以下使用蛋糕模式的代码。
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?
}
}
}
如何使用mockito matchers将第一个参数存根到方法getAll?
答案 0 :(得分:1)
我设法使用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?
}
}
答案 1 :(得分:0)
它也需要成为匹配者,
eq("How to stub this parameter using mockito ?")
查看Matchers
文档here:
警告:
如果您使用的是参数匹配器,则所有参数都必须由匹配器提供。
例如:(示例显示验证,但同样适用于存根):
验证(mock).someMethod(anyInt(),anyString(),eq(“第三个参数”)); //上面是正确的 - eq()也是一个参数匹配器
验证(mock).someMethod(anyInt(),anyString(),“第三个参数”); //上面是不正确的 - 将抛出异常,因为第三个参数是在没有参数匹配器的情况下给出的。