angularjs – 测试具有JSON请求体的Laravel控制器

前端之家收集整理的这篇文章主要介绍了angularjs – 测试具有JSON请求体的Laravel控制器前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在为一个Laravel控制器编写一个PHPunit测试,期望使用 JSON格式的主体发布请求.

控制器的简化版本:

class Account_Controller extends Base_Controller
{
    public $restful = true;

    public function post_login()
    {
        $credentials = Input::json();
        return json_encode(array(
            'email' => $credentials->email,'session' => 'random_session_key'
        ));
    }
}

目前我有一个测试方法正确地发送数据作为urlencoded表单数据,但我无法解决如何发送数据作为JSON.

我的测试方法(我在编写测试时使用github gist here)

class AccountControllerTest extends PHPUnit_Framework_TestCase {
    public function testLogin()
    {
        $post_data = array(
            'email' => 'user@example.com','password' => 'example_password'
        );
        Request::foundation()->server->set('REQUEST_METHOD','POST');
        Request::foundation()->request->add($post_data);
        $response = Controller::call('account@login',$post_data);
        //check the $response
    }
}

我在前端使用angularjs,默认情况下,发送到服务器的请求是JSON格式.我不想改变它发送一个urlencoded形式.

有谁知道我如何编写一个测试方法,为控制器提供一个JSON编码体?

这样做很简单.您可以将Input :: $json属性设置为要作为post参数发送的对象.请参阅下面的示例代码
$data = array(
        'name' => 'sample name','email' => 'abc@yahoo.com',);

 Input::$json = (object)$data;

 Request::setMethod('POST');
 $response = Controller::call('client@create');
 $this->assertNotNull($response);
 $this->assertEquals(200,$response->status());

我希望这可以帮助你测试用例

更新:原始文章可在这里http://forums.laravel.io/viewtopic.php?id=2521

原文链接:https://www.f2er.com/angularjs/142355.html

猜你在找的Angularjs相关文章