发布于2021-11-13 14:08 阅读(554) 评论(0) 点赞(17) 收藏(5)
我正在 Laravel 5.1 中构建一个测试例程来运行我刚刚创建的登录过程。作为测试的一部分,我想测试密码重置和更改过程。
问题是密码重置过程生成并在带有时间戳和 uuid 的表中行。该链接的有效期为 1 小时,以便重置生效。
流程是:
1- 通过输入电子邮件地址重置密码
2- 系统生成带有 uuid 链接的电子邮件并发送给用户(目前它出现在 Laravel 日志中)。
3- 用户点击电子邮件中的链接,如果在生成后一小时内,用户会看到一个密码更改屏幕。该链接也将从表中删除。
所以现在我的测试代码:
public function testSendPasswordLink()
{
$this->visit('/login')
->click('Forgot Your Password?')
->seePageIs('/forgot-password')
->type('test@test.com','email')
->press('Send Password Reset Link')
->seePageIs('/login')
->see('A password reset link was sent to the email address supplied.')
->seeInDatabase('password_resets', ['email' => 'test@test.com']);
}
我想要:
->getFromDatabase('password_resets', 'uuid')
->visit('/reset-password/'.$uuid)
->see(....
有没有办法做到以上几点?我知道如何see in the table
但不知道如何get from the table
在测试中。
或者,有没有办法通过一组不同的步骤来实现这一点?
谢谢!
哇,精神错乱……好吧,我是新手,所以我现在还不会处决自己……!答案很明显(睡在上面之后!)
我所要做的就是查询表并检索令牌以执行密码重置测试......下面是完成的代码:
将 Eloquent 添加到测试 php 文件中
使用 Illuminate\Database\Eloquent\Model;
下面是完整的功能:
公共函数 testChangePassword()
$this->visit('/login')
->click('Forgot Your Password?')
->seePageIs('/forgot-password')
->type('test@test.com','email')
->press('Send Password Reset Link')
->seePageIs('/login')
->see('A password reset link was sent to the email address supplied.')
->seeInDatabase('password_resets', ['email' => 'test@test.com']);
$uuid = DB::table('password_resets')
->where('email', '=', 'test@test.com')
->value('token');
$this->visit('/reset-password/' . $uuid)
->type('bbbbbbbb','password')
->type('bbbbbbbb','password_confirmation')
->press('Change Password')
->see('Your password was reset.')
->seePageIs('/login')
->type('test@test.com','email')
->type('bbbbbbbb','password')
->press('Sign In')
->seePageIs('/welcome')
->click('Logout')
->seePageIs('/login');
// Change password back
$this->visit('/login')
->click('Forgot Your Password?')
->seePageIs('/forgot-password')
->type('test@test.com','email')
->press('Send Password Reset Link')
->seePageIs('/login')
->see('A password reset link was sent to the email address supplied.')
->seeInDatabase('password_resets', ['email' => 'test@test.com']);
$uuid = DB::table('password_resets')
->where('email', '=', 'test@test.com')
->value('token');
$this->visit('/reset-password/' . $uuid)
->type('abcd1234','password')
->type('abcd1234','password_confirmation')
->press('Change Password')
->see('Your password was reset.')
->seePageIs('/login')
->type('test@test.com','email')
->type('abcd1234','password')
->press('Sign In')
->seePageIs('/welcome')
->click('Logout')
->seePageIs('/login');
顺便说一句,我似乎无法用 {} 括号格式化代码,所以很抱歉。
作者:黑洞官方问答小能手
链接:http://www.phpheidong.com/blog/article/198312/b3bd81d18d27645256e4/
来源:php黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 php黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-4
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!