我正在尝试为存储库中的功能编写测试代码。我的回购代码是;
public function getcomment($id){
$data = ProductComment::active()
->where('productId',$id)
->orderBy('date','desc')
->simplePaginate(5)->items();
return $data;
}
为此,我编写了此测试代码;
public function testgetcomment(){
/*$Mock = \Mockery::mock(Product::class);
$Mock->shouldReceive('getId')
->once()
->andReturn(true);
$this->repo->getcomment($Mock->getId());
$this->assertTrue(true);*/
$ecpected=ProductComment::where('productId',1)->get();
$actual=$this->repo->getcomment(1);
self::assertEquals($expected,$actual);}
我收到此错误;
Array()与预期的类型“对象”不匹配。你能帮我吗?
答案 0 :(得分:2)
分页对象上的items()
函数返回对象数组。但是,口才查询中的get()
函数返回collection个对象。
要修复测试,请从集合中返回基础数组。
$ecpected = ProductComment::where('productId',1)->get()->toArray();
$actual = $this->repo->getcomment(1);
self::assertEquals($expected,$actual);
答案 1 :(得分:0)
1。检查变量名(#!/bin/bash
mystring="5e51584a4c"
for (( i = 0; i < ${#mystring}; i += 2)); do
snumber="${mystring:i:2}"
echo "number as string=${snumber}"
echo "number=$((16#${snumber}))"
done
包含您要从模型中提取的数据,$ecpected
是您要比较的数据)。
$expected
2。您可以比较检查两个变量的转储(以确保获得不同的类型(您的存储库返回数组,而查询ProductComment则返回对象/集合)。
$ecpected=ProductComment::where('productId',1)->get();
$actual=$this->repo->getcomment(1);
self::assertEquals($expected,$actual);
3。您可能需要在dump($expected);
dump($actual);
变量上使用toArray()
方法才能实现目标。