当前位置 : 主页 > 编程语言 > ruby >

ruby-on-rails – 在进行验收测试和跟踪BDD时,您是断言数据库更改还是用户看到的

来源:互联网 收集:自由互联 发布时间:2021-06-23
我在 Ruby on Rails应用程序上使用Steak进行验收测试.想象一下,我想测试一个表单的功能. 如果所有字段都正确,则应创建用户. 如果任何字段不正确,则不应创建用户. 在第一种情况下,一条消
我在 Ruby on Rails应用程序上使用Steak进行验收测试.想象一下,我想测试一个表单的功能.

>如果所有字段都正确,则应创建用户.
>如果任何字段不正确,则不应创建用户.

在第一种情况下,一条消息将通知用户已创建:’用户已创建’

在第二种情况下,错误消息将指示错误.

我可以根据显示的信息进行测试.也就是说,如果显示正确的消息,则第一次测试通过.

或者我可以根据数据库的变化进行测试.也就是说,如果数据库有一个包含输入数据的新用户,则第一次测试通过.

或者我可以断言这两个条件,数据库应该更改并应显示相应的消息.

根据行为驱动开发,根据概念上适当的方法测试这种行为是什么?

根据实用程序员的说法,测试这种行为的实际方法是什么?

我的BDD实践涉及使用Cucumber.我尽最大努力保持用户看到的东西.也就是说,任何When和Then语句都应该反映用户输入或用户视觉效果.

在你的情况下,我会确保之后出现成功消息,然后我会(如果可能的话)在屏幕上查找指示应用程序知道该对象的数据.例如,如果您在博客帖子中添加评论,则应填写帖子,点击“接受”按钮,查看“已发布消息”成功消息,然后在页面上将您的内容视为新帖子.

您应该使用单元和有时控制器测试来备份用户驱动的BDD测试,以确保幕后的所有内容都能正常运行.

我倾向于使用RSpec并验证事物是否已添加到数据库中,方法正在返回预期结果等.但我也使用Cucumber确保用户看到用户期望看到的内容(但我并不真正让黄瓜关心关于DB中的内容.

我希望这有帮助.如果您不使用黄瓜,我强烈推荐它与RSpec一起进行BDD测试.你应该查看这本书(以电子PDF格式提供) – 我从那开始,它对我的​​测试实践有所帮助:

http://www.pragprog.com/titles/achbd/the-rspec-book

网友评论