为什么单元测试"测试1"返回状态码500,而不是200?有人可以解释一下吗? 以下是针对相同操作的2个测试中的示例,它们返回不同的状态代码。我在两次测试中都预计会有200个?
LanguageController
class LanguageController extends Controller implements IEntityViewManager
{
public function showAllView()
{
$allLanguages = $this->languageRepo->orderBy('id');
return view('admin.languages.showAll')->with('languages', $allLanguages);
}
}
LanguageControllerTest
class LanguageControllerTest extends TestCase
{
public function __construct($name = NULL, array $data = array(), $dataName = '')
{
parent::__construct($name, $data, $dataName);
}
public function setUp()
{
parent::setUp();
}
public function tearDown()
{
Mockery::close();
}
protected function setUpMock()
{
$mock = Mockery::mock(LanguageRepositoryInterface::class);
$this->app->instance(LanguageRepositoryInterface::class, $mock);
return $mock;
}
// test 1
public function testShowAllLanguages()
{
$mock = $this->setUpMock();
$mock->shouldReceive('orderBy')->once()->andReturn([1]);
$result = $this->action('GET', 'Entities\LanguageController@showAllView');
var_dump("Test 1 : " . $result->getStatusCode()); // RETURNS 500
}
// test 2
public function testShowAllView()
{
$result = $this->action('GET', 'Entities\LanguageController@showAllView');
var_dump("Test 2 : " . $result->getStatusCode()); // RETURNS 200
$this->assertViewHas('languages');
$this->assertResponseOk();
}
}
cmd中的回复:
答案 0 :(得分:2)
我检查了laravel.log,然后找到了下一个日志:
[2016-04-26 08:45:49] testing.ERROR:异常'ErrorException'用 消息'试图获取非对象的属性' C:\ XAMPP \ htdocs中\ STP \存储\框架\视图\ 76c117f88e2ab8d2c5f85f5187e254573559a2c3.php:7 堆栈跟踪:
和下一个日志:
下一个异常'ErrorException',消息'试图获取属性 非对象(查看: C:\ XAMPP \ htdocs中\ STP \资源\意见\ ADMIN \语言\ showAll.blade.php)” 在 C:\ XAMPP \ htdocs中\ STP \存储\框架\视图\ 76c117f88e2ab8d2c5f85f5187e254573559a2c3.php:7
堆栈追踪:
在我看来,我可以通过以下方式访问$ language属性:
$ languages-> char,$ language-> name
但它是数组,所以我应该访问:
$ language ['char'],$ language ['name']
现在两个测试都正常运行并返回状态代码200 。
谢谢大家的帮助。