Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel 5-单元测试-状态代码500,预计为200_Php_Unit Testing_Laravel_Laravel 5_Mockery - Fatal编程技术网

Php Laravel 5-单元测试-状态代码500,预计为200

Php Laravel 5-单元测试-状态代码500,预计为200,php,unit-testing,laravel,laravel-5,mockery,Php,Unit Testing,Laravel,Laravel 5,Mockery,为什么“测试1”中的单元测试会返回状态代码500而不是200?谁能给我解释一下吗? 下面是两个测试中相同操作的示例,它们返回不同的状态代码。我在两次测试中都期望200 语言控制器 class LanguageController extends Controller implements IEntityViewManager { public function showAllView() { $allLangu

为什么“测试1”中的单元测试会返回状态代码500而不是200?谁能给我解释一下吗? 下面是两个测试中相同操作的示例,它们返回不同的状态代码。我在两次测试中都期望200

语言控制器

    class LanguageController extends Controller implements IEntityViewManager
    { 
          public function showAllView()
          {
              $allLanguages = $this->languageRepo->orderBy('id');

              return view('admin.languages.showAll')->with('languages', $allLanguages);
          }
    }
语言控制器测试

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中的响应:


我检查了laravel.log,找到了下一个日志:

[2016-04-26 08:45:49]测试。错误:异常“ErrorException”带有 中的消息“正在尝试获取非对象的属性” C:\xampp\htdocs\STP\storage\framework\views\76c117f88e2ab8d2c5f85f5187e254573559a2c3.php:7 堆栈跟踪:

和下一个日志:

下一个异常为“ErrorException”,消息为“正在尝试获取属性” 非对象(视图: C:\xampp\htdocs\STP\resources\views\admin\languages\showAll.blade.php)' 在里面 C:\xampp\htdocs\STP\storage\framework\views\76c117f88e2ab8d2c5f85f5187e254573559a2c3.php:7

堆栈跟踪:

在我看来,我可以通过以下方式访问$language属性:

$languages->char$language->name

但它是数组,因此我应该使用以下方法访问:

$language['char'],$language['name']

这两个测试现在都能正常工作并返回状态代码200


谢谢大家的帮助。

您是否尝试过查看Laravel错误日志文件?查看日志文件将非常有帮助,但我猜您并不是在模仿LanguagePO,而是在为
$dontReport
正确设置空数组(不应报告的异常类型列表)在app/exceptions/Handler.php中,可以帮助排除测试中的错误,因为它们可以通过这种方式在日志中查看。