假设我有一个带有身份验证用户名和密码的网站,并且出于安全原因,用户必须每X个月更改密码(因此密码在X个月更改后到期,用户,下次登录时,将会出现更改密码屏幕)。想象一下,在用户表中有一列LastChangeDate或NextChangeDate。
假设它是BDD中的有效验收测试,我应该有类似
的内容Given My password has expired
When I sign in
And I complete the change password form..
Then I can sign in with the new password
我应该如何实施第一个“给定”步骤? 创建一个使用户密码失效的功能(例如转到用户表并更改LastChangeDate / NextChangeDate)是一个好习惯吗?那只是为了测试。
我正在使用C#和Selenium,但我不认为它(因此)相关。这更像是一个问题,如何模拟BDD中的未来事件,但找不到合适的答案。
答案 0 :(得分:1)
在ruby中有一个名为timecop的库,用于执行此类操作。基本上它使您能够前往不同的时间。这将允许您实现您的给定类似
Given "my password has expired" do
timecop.travel - password_expiration time
@i = create user
timecop.travel present
@i.expired?.should be_true
end
(上面是伪代码)
我希望在C#领域有类似的东西。
无论如何只是为了参考,在您的上下文中打开用户记录并将设置过期设置为true同样可行。
答案 1 :(得分:0)
我最终做的是将包含存储库的库作为参考包含,并直接使用存储库来更改我的用户记录。