我在 Ruby on Rails应用程序上使用Steak进行验收测试.想象一下,我想测试一个表单的功能. 如果所有字段都正确,则应创建用户. 如果任何字段不正确,则不应创建用户. 在第一种情况下,一条消
>如果所有字段都正确,则应创建用户.
>如果任何字段不正确,则不应创建用户.
在第一种情况下,一条消息将通知用户已创建:’用户已创建’
在第二种情况下,错误消息将指示错误.
我可以根据显示的信息进行测试.也就是说,如果显示正确的消息,则第一次测试通过.
或者我可以根据数据库的变化进行测试.也就是说,如果数据库有一个包含输入数据的新用户,则第一次测试通过.
或者我可以断言这两个条件,数据库应该更改并应显示相应的消息.
根据行为驱动开发,根据概念上适当的方法测试这种行为是什么?
根据实用程序员的说法,测试这种行为的实际方法是什么?
我的BDD实践涉及使用Cucumber.我尽最大努力保持用户看到的东西.也就是说,任何When和Then语句都应该反映用户输入或用户视觉效果.在你的情况下,我会确保之后出现成功消息,然后我会(如果可能的话)在屏幕上查找指示应用程序知道该对象的数据.例如,如果您在博客帖子中添加评论,则应填写帖子,点击“接受”按钮,查看“已发布消息”成功消息,然后在页面上将您的内容视为新帖子.
您应该使用单元和有时控制器测试来备份用户驱动的BDD测试,以确保幕后的所有内容都能正常运行.
我倾向于使用RSpec并验证事物是否已添加到数据库中,方法正在返回预期结果等.但我也使用Cucumber确保用户看到用户期望看到的内容(但我并不真正让黄瓜关心关于DB中的内容.
我希望这有帮助.如果您不使用黄瓜,我强烈推荐它与RSpec一起进行BDD测试.你应该查看这本书(以电子PDF格式提供) – 我从那开始,它对我的测试实践有所帮助:
http://www.pragprog.com/titles/achbd/the-rspec-book