php 测试控制器,php – Laravel CRUD控制器测试

基本上我必须为许多Laravel控制器编写测试,其中大多数是CRUD(读取,存储,更新),并且大多数逻辑都放在那些内部(继承代码,而不是我的).

我需要做的是从用户的角度自动化测试.因此,我需要点击所有端点并针对真实数据库进行测试,并检查一切是否正常.

我几乎没有测试经验,但从我收集的控制器应该通过集成/验收测试进行测试.现在我通过扩展Laravel的TestCase测试Read方法做得很好,这是一个例子:

class SongsTest extends TestCase

{

public function testBasicIndex()

{

$arguments = [];

$response = $this->call('GET', '/songs', $arguments);

$this->assertResponseOk();

$this->seeJson();

}

/**

* @dataProvider providerSearchQuery

*/

public function testSearchIndex($query)

{

$arguments = ['srquery' => $query];

$response = $this->call('GET', '/songs', $arguments);

$this->assertResponseOk();

$this->seeJson();

}

public function providerSearchQuery()

{

return array(

array('a'),

array('as%+='),

array('test?Someqsdag8hj$%$')

);

}

public function testGetSongsById()

{

$id = 1;

$response = $this->call('GET', '/songs/' . $id);

$this->assertContains($response->getStatusCode(), [200, 404]);

$this->seeJson();

if($response->getStatusCode() == 404)

{

$content = json_decode($response->getContent());

$this->assertContains($content->message[0], ['Song not found', 'Item not active']);

}

}

}

这些测试命中了端点并检查响应是否为200,格式是JSON还是其他一些东西.这些工作正常.

我遇到的问题是:

比方说,我们有一个UserController和一个创建用户的方法.之后,应该在TokensController中使用所述用户来创建一个令牌,该令牌应该以某种方式被记住并在将来使用令牌保护请求的测试中使用.

我的问题 :

我如何自动化:通过在测试数据库中创建真实用户(无需模拟)测试UserController的存储方法,使用该用户的电子邮件测试TokensController的存储方法,使用创建的令牌测试其他控制器并在测试完成后删除,所以它可以再次执行.

我无法概念化所有这些,因为我还没有真正做过多少测试.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值