accept标头 php,如何在Laravel 5包中的测试中模拟Accept标头?

我正在构建一个Laravel包,它Illuminate\Http\Request通过宏注入一个新方法.我正在注入的方法已经完成,预计可以很好地工作,但我也想在发布它之前测试它.

我的测试要求我更改请求的Accept标题,以便我查看测试是否通过.所以我已经完成以下操作来模拟请求:

// package/tests/TestCase.php

namespace Vendor\Package;

use Illuminate\Http\Request;

use Orchestra\Testbench\TestCase as Orchestra;

abstract class TestCase extends Orchestra

{

/**

* Holds the request

* @var Illuminate\Http\Request

*/

protected $request;

/**

* Setup the test

*/

public function setUp()

{

parent::setUp();

$this->request = Request::capture();

$this->request->headers->set('Accept', 'application/x-yaml');

}

}

然后在我的测试中,我使用我正在注入的方法Request,$this->request->wantsYaml()并且它始终返回false,因为Accept标头未设置为application/x-yaml.

class RequestTest extends TestCase

{

/** @test */

public function it_should_return_a_bool_if_page_wants_yaml_or_not()

{

dump($this->request->wantsYaml()); // Return false

$this->assertTrue($this->request->wantsYaml()); // It fails!

}

}

如何在Laravel包开发中继续模拟测试中的头文件?

编辑

这是我的YamlRequest班级

use Illuminate\Http\Request;

use Illuminate\Support\Str;

class YamlRequest extends Request

{

/**

* Acceptable content type for YAML.

* @var array

*/

protected $contentTypeData = ['/x-yaml', '+x-yaml'];

/**

* Determine if the current request is asking for YAML in return.

*

* @return bool

*/

public function wantsYaml()

{

$acceptable = $this->getAcceptableContentTypes();

// If I dd($acceptable), it comes out as empty during tests!

return isset($acceptable[0]) && Str::contains($acceptable[0], $this->contentTypeData);

}

}

因此,我必须模拟Accept,以便查看我的wantsYaml方法是否按预期工作.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值