【发布时间】:2012-03-31 10:14:03
【问题描述】:
我有 Sinatra 应用程序,需要测试我的应用程序。
功能/支持/env.rb:
require_relative "../../application"
require "capybara"
require "capybara/cucumber"
require "rspec"
World do
Capybara.app = Application
include Capybara::DSL
include RSpec::Matchers
end
features/one.feature:
Feature: Test homepage
In order to make sure people can open my site
I want to check it opened
Scenario: Opening first page
Given I have opened homepage
Then I should see site header
测试一下:
cucumber features\one.feature
结果:
Feature: Test homepage
In order to make sure people can open my site
I want to check it opened
Scenario: Opening first page # features\one.feature:5
Given I have opened homepage # features\one.feature:6
Then I should see site header # features\one.feature:7
1 scenario (1 undefined)
2 steps (2 undefined)
0m0.006s
You can implement step definitions for undefined steps with these snippets:
Given /^I have opened homepage$/ do
pending # express the regexp above with the code you wish you had
end
Then /^I should see site header$/ do
pending # express the regexp above with the code you wish you had
end
好吧,我已经创建了 features/step_definitions/agenda_steps.rb:
Given /^I have opened homepage$/ do
pending # express the regexp above with the code you wish you had
end
Then /^I should see site header$/ do
pending # express the regexp above with the code you wish you had
end
测试一下:
cucumber features\one.feature
结果:
Feature: Test homepage
In order to make sure people can open my site
I want to check it opened
Scenario: Opening first page # features\one.feature:5
Given I have opened homepage # features/step_definitions/agenda_steps.rb:1
C:/Ruby193/bin/cucumber:19: stack level too deep (SystemStackError)
为什么以及如何解决?
更新:如果我像这样重写我的 env.rb,问题就会消失:
require_relative "../../application"
require "capybara"
require "capybara/cucumber"
require "rspec"
Capybara.app = Application
#World do
# Capybara.app = Application
#
# include Capybara::DSL
# include RSpec::Matchers
#end
【问题讨论】:
-
您能否发布您的 Gemfile.lock 或更多,以便您使用什么版本的黄瓜、水豚和 rspec
-
我已经在这里发布了我的 Gemfile.lock:pastebin.com/8Ni5MSdj
-
@Jacob,Rspec 用于断言,而 Capybara 只是与网络驱动程序对话。话虽如此,你肯定需要 Rspec 和 Capybara(可能还有 Selenium)
标签: ruby cucumber sinatra capybara