大约半年前,我开始深入研究单元测试。我进入了 TDD(或我认为的),现在我想开发一个 MVC 应用程序行为驱动。验收测试(真正的端到端)的概念对我来说是新的,因为我的上一个项目没有在验收测试环境中运行。
我从阅读一些好文章开始,尤其是 Sanderson 的http://blog.stevensanderson.com/2010/03/03/behavior-driven-development-bdd-with-specflow-and-aspnet-mvc/并且正在备份我的通过阅读他关于该主题的书来掌握 MVC 技能。
我正在使用 SpecFlow 和 SimpleBrowser 进行端到端测试。通过导航栏驾驶导航是小菜一碟,但我现在被困住了。我的目标是实现用户帐户以进一步创建文章和评论。推动注册过程让我很头疼。鉴于此功能文件:
Feature: User accounts
In order to customize and influence page content
As a user
I want to able to create an own user account
Scenario: Create a user
Given I am on the /Account/Create page
When I fill out the registration formular as follows
| NickName | EmailAddress |
| test123 | test.address@test-server.com |
And I click the "Create" button
And I clicked the link in the authentication mail
Then I should be on the root page
And I should see the message "Welcome test123!"
我真的不知道如何提供必要的测试环境(本例中的邮件服务器)并使测试不那么脆弱(考虑将“创建”按钮重新标记为“提交”)。更不用说在捕获生成器中编织以防止以后自动创建用户(哦,具有讽刺意味)。也许我只是想太多了,实际上你不应该在 TDD 中,但有时我只是盯着屏幕思考我的下一个测试。
Soo ..在那堵文字墙之后,实际问题是:我应该如何实施这种行为?
- 坚持 UI 级别测试并根据需要进行重构以实现捕获逻辑
- 回退到控制器级别测试
- 你以任何其他方式启发我