在我的BDD场景中自动执行Then步骤的设计问题

时间:2013-02-10 13:26:53

标签: bdd jbehave

我是BDD的新手,我正在尝试使用BDD为网站开发简单注册模块

我有以下情景

Scenario: An anonymous visitor successfully signs up with the website  
Given the following email address: john.smith@gmail.com and a chosen member status of childminder and the following password: ------ 
When the anonymous visitor signs up  
Then a confirmation email with activation information is sent to the anonymous visitor

我很茫然自动执行Then步骤(“然后将包含激活信息的确认电子邮件发送给匿名访客”)

以下是我所做的(与JBehave合作):

@Given("the following email address: $email and a chosen member status of $status and the following password: $password")
public void anonymousVisitorEntersDetails(String email, String status, String password) {
    pages.home().open();
    pages.home().enterDetails(email, status, password);
}

@When("the anonymous visitor signs up")
public void anonymousVisitorDoesRegister(String login, String password) {
    pages.home().doRegister();
}

@Then("a confirmation email with activation information is sent to the anonymous visitor")
public void activationInformationIsSent() {
    //TODO ??
}

我遇到的问题不是设计问题的工具问题。如果有经验丰富的BDD从业者帮我解决这个问题,我将不胜感激......

1 个答案:

答案 0 :(得分:1)

让我们从您的Given开始吧。这设置了上下文。如果我了解您的情况,可能感兴趣的相关事项是: - 未登录 - 在主页(或注册)页面上 这里不要提到用户的详细信息。

接下来,您的When步骤指定匿名用户注册的用户详细信息。

最后,Then步骤需要检查是否发送了确认电子邮件。虽然很有可能发送电子邮件和检查它是否到达,这将是一个错误的IMO。电子邮件无法保证到达,无论如何都很慢。保持您的测试套件快速而强大。

而是使用When语句的语句或方案中的标记来指示您的应用程序应使用模拟电子邮件组件构建。在Then步骤中,您可以询问模拟以验证它是否已按预期调用。

在测试的某个地方,您仍然需要进行集成和/或验收测试,以验证是否已正确部署“真正的”电子邮件组件。这可能是手动测试,也可能是一个缓慢的&气质自动化测试,登录到邮件客户端并进行轮询,直到有预期内容的电子邮件到达。