【问题标题】:write unit test request->ajax() laravel编写单元测试请求->ajax() laravel
【发布时间】:2017-05-11 07:05:22
【问题描述】:

如何为这个函数编写测试?? 如何测试 request-ajax()??

public function getChangeLoc(Request $request, $loc)
{   
    if ($request->ajax()) {

        if(!in_array($loc, config('loc.available'))) {
            return response()->json([
                'status' => 'ERROR',
                'message' => 'Not available'
            ]);
        }
        Session::put('locale', $loc);

        return response()->json([
            'status' => 'OK',
            'loc' => $loc,
        ]);
    }

    if(!in_array($loc, config('loc.available'))) {
        return Redirect::to('/?unknown-loc);
    }
    Session::put('loc', $loc);

    if(filter_var($request->input('redirect_url', ''), FILTER_VALIDATE_URL)) {
        return Redirect::to($request->input('redirect_url'));
    }

    return Redirect::to('/');
}

我这样测试函数

            $this->visit('/loc/en')
                 ->seePageIs('/admin/client')

但它没有看到 request->ajax?

【问题讨论】:

    标签: php laravel unit-testing laravel-5 laravel-5.1


    【解决方案1】:

    要测试 ajax 请求,您可以在您的 TestCase 类中实现此方法的功能。您的请求需要 HTTP_X-Requested-With 标头。

    protected function ajaxPost($route = '', array $parameters = [])
    {
        return empty($route) ? null : $this->json(
            'post',
            $route,
            $parameters,
            ['HTTP_X-Requested-With' => 'XMLHttpRequest']
        );
    }
    

    现在你可以测试你的类了

    $this->ajaxPost(route('your.route'), ['foo' => 'bar'])->seeJson([
        'is_ok' => true,
    ]);
    

    记住:这不是单元测试。

    【讨论】:

    • 路由方法是get所以不会post吧?
    • $route = ' ' 和内部参数 = [ ] 必须填写什么??
    • 是的,此方法中的路由是 POST 目标。参数是可选的 - 查看示例。 :)
    • 好的,这就是我在 TestCase 保护函数 ajaxGet($route = '', array $parameters = []) { return empty($route) 中所做的? null : $this->json('get', $route, $parameters, ['HTTP_X-Requested-With' => 'XMLHttpRequest'] ); } 还要填什么??
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-10
    • 2015-07-30
    • 1970-01-01
    • 2017-02-15
    • 1970-01-01
    • 2014-08-28
    • 1970-01-01
    相关资源
    最近更新 更多