3

我正在尝试以第一人称编写我当前的应用程序黄瓜功能,例如:

Given I am logged in as a user
And Mark is a user
When I send him a friend request
Then he should have a friend request from me
And he should receive an email

我正在努力正确编写步骤以确保我用“他”、“他”和“我”来引用正确的用户。

我可以处理:

When I send Mark a friend request

通过使用:

When /^I send (.+) a friend request$/ do |user|
  @user = User.find_by_email(user.downcase + "@test.org")
  visit '/users/' + @user.id.to_s
  click_button "Add Friend"
end

但宁愿能够使用“他”或“他”。

我正在考虑实现我应该在步骤“(。+)是用户”中真正分配@second_user或其他一些变量。

那是对的吗?

对此的任何建议都非常感谢!

4

2 回答 2

2

老实说,我认为这最终会带来更多的麻烦而不是它的价值。坐在这里试图想出一个解决方案,我想不出任何最终不会成为负担的事情,以防在未来场景中重新使用这些步骤定义,甚至是未来读者的心理负担试图弄清楚执行的流程。

我实际上更喜欢在每一步都使用名称而不是代词的明确性。以我的经验,特别是当实体之间的交互变得更加复杂时,为了遵循什么是正在发生。

于 2012-12-10T03:41:20.620 回答
0

你需要在第二步赶上马克:

And Mark is a user

这一步必须经过验证,即Mark必须存在。然后你可以在第三步推荐他。

如何在功能:

Given I am logged in as a user
And A user exists with name "Mark"
When I send him a friend request

然后在user_steps.rb

Given /^I am logged in as a user$/ do
    pending #blah blah
end

Given /^A user exists with name "([^"]+)"$/ |username| do
    @user = User.find_by_email(username.downcase + "@test.org")
    @user.should be_true
end

When /^I send (\w+) a friend request$/ do |user|
    user = @user
    # visit blah blah
end
于 2012-12-09T17:52:26.990 回答