我有下面的代码,使用蛋糕模式。
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(), "第三个参数");//上面是错误的——会抛出异常,因为第三个参数没有给出参数匹配器。