首先,在处理 Web 应用程序时,您最初的重点应该是应用程序做什么以及为什么它很重要。所以它是如何实现的完全无关紧要。
使用 Cucumber 作为使用 BDD 驱动开发的工具,您只需编写由业务想要什么以及为什么他们想要的东西如此重要以至于他们希望您尽快处理它的场景指导的场景。
使用 UI,用户将做某事(WHAT),而那件事很重要(WHY)。他们正在做的事情将需要与 UI 交互(此时他们如何交互完全无关紧要。这种交互在场景 WHEN 中捕获。
为了让他们进行这种互动,有些事情必须已经发生。这些东西被场景 GIVENS 捕捉到。用户与系统交互后,需要在 UI 中进行更改。您在 THENS 场景中对此进行检查。
一旦你有了你的场景,你就可以定义并开始实施你的步骤定义。通常,我将每个步骤定义都作为对辅助方法的一次调用,因此这些步骤只做一件事,即将场景中的一行转换为您的编程语言中的调用。
现在您可以在您的编程语言中定义一个方法,然后您才应该开始考虑如何使这一切工作。
从一个您理解的非常简单的示例开始这项工作。我会选择注册。
Scenario: Register
Given I am a new user
When I register
Then I should be registered
现在我们可以做步骤定义了,(我会用 ruby,你必须翻译)
Given 'I am a new user' do
@i = create_new_user
end
When 'I register' do
register(user: @i)
end
Then 'I should be registered' do
check_registration(user: @i)
end
现在我们制作我们的辅助方法
def create_new_user
# here you will create a new user. The user will know their email and password
end
def register(user: )
# here you can use a tool, perhaps selenium, to goto the registration page
# and fill in the registration from. You can use the user to get the email,
# password and any other registration details
end
def check_registration(user: )
# here you will look at where you are in the UI and look at the page to
# confirm the user is registered
end
差不多就是这样。您只需为您发现的每一个新行为重复该模式。
一些进一步的提示
大多数 Givens 不需要通过 UI 所有 WHENS 与 UI 交互所有 THENS 都应该与 UI 交互
您对后端所做的一切与您如何继续使用 BDD 开发新行为完全无关。BDD 就是要找出什么和为什么。只有当您开始考虑如何使您指定的行为发挥作用时,您的后端才会变得相关。
如果你以小的增量步骤工作,你可以使用你以前的行为来建立你的新行为。因此,一旦我们可以注册,我们就可以开始考虑登录
Scenario: Sign in
Given I am registered
When I sign in
Then I should be signed in
我们遵循与上面完全相同的模式。
请注意,因为 Given 不必通过 UI,我们可以执行类似的操作
Given 'I am registered' do
@i = create_registered_user
end
def create_registered_user
user = create_new_user
save_user_to_db(user)
return user
end