2010-07-29 64 views
0

Rspec显然讨厌我。我有点恨他回来。对于#<Cucumber :: Rails :: World:0x818e02e8>(NoMethodError)未定义的方法`find_link'

#features/step_definitions/custom_steps.rb 
Then /^I should see the link "([^\"]*)"$/ do |linked_text| 
find_link(linked_text) 
end 

#link.feature 
Then I should see the link "foo" 

从终端:

undefined method `find_link' for #<Cucumber::Rails::World:0x818e02e8> (NoMethodError) 
./features/step_definitions/custom_steps.rb:115:in `/^I should see the link "([^\"]*)"$/' 

我env.rb文件:

 

#features/support/env.rb 

# IMPORTANT: This file is generated by cucumber-rails - edit at your own peril. 
# It is recommended to regenerate this file in the future when you upgrade to a 
# newer version of cucumber-rails. Consider adding your own code to a new file 
# instead of editing this one. Cucumber will automatically load all features/**/*.rb 
# files. 

ENV["RAILS_ENV"] ||= "cucumber" 
require File.expand_path(File.dirname(__FILE__) + '/../../config/environment') 

require 'cucumber/formatter/unicode' # Remove this line if you don't want Cucumber Unicode support 
require 'cucumber/rails/world' 
require 'cucumber/rails/active_record' 
require 'cucumber/web/tableish' 

require 'webrat' 
require 'webrat/core/matchers' 
require 'spec/stubs/cucumber' 

Scenes::load 

Webrat.configure do |config| 
    config.mode = :rails 
    config.open_error_files = false # Set to true if you want error pages to pop up in the browser 
end 

# If you set this to false, any error raised from within your app will bubble 
# up to your step definition and out to cucumber unless you catch it somewhere 
# on the way. You can make Rails rescue errors and render error pages on a 
# per-scenario basis by tagging a scenario or feature with the @allow-rescue tag. 
# 
# If you set this to true, Rails will rescue all errors and render error 
# pages, more or less in the same way your application would behave in the 
# default production environment. It's not recommended to do this for all 
# of your scenarios, as this makes it hard to discover errors in your application. 
ActionController::Base.allow_rescue = false 

# If you set this to true, each scenario will run in a database transaction. 
# You can still turn off transactions on a per-scenario basis, simply tagging 
# a feature or scenario with the @no-txn tag. If you are using Capybara, 
# tagging with @culerity or @javascript will also turn transactions off. 
# 
# If you set this to false, transactions will be off for all scenarios, 
# regardless of whether you use @no-txn or not. 
# 
# Beware that turning transactions off will leave data in your database 
# after each scenario, which can lead to hard-to-debug failures in 
# subsequent scenarios. If you do this, we recommend you create a Before 
# block that will explicitly put your database in a known state. 
Cucumber::Rails::World.use_transactional_fixtures = true 
# How to clean your database when transactions are turned off. See 
# http://github.com/bmabey/database_cleaner for more info. 
if defined?(ActiveRecord::Base) 
    begin 
    require 'database_cleaner' 
    DatabaseCleaner.strategy = :truncation 
    rescue LoadError => ignore_if_database_cleaner_not_present 
    end 
end 

有什么不对?谢谢。

回答

0

这个错误告诉你没有你的步骤或助手定义这个方法。

您是否试图使用埋在Webrat中的助手之一?这听起来像你想要的:

Webrat::Locators.find_link 
+0

Webrat :: Locators:Module(NoMethodError)的未定义方法'find_link' – 2010-07-30 10:51:37

相关问题