2010-05-03 54 views
1

我将authlogic_facebook_connect插件添加到我的项目中,并且由于NoMethodError,我现在遇到了运行我的黄瓜测试的问题。Authlogic Facebook Connect和黄瓜

undefined method `set_facebook_session' for nil:NilClass (NoMethodError) 

在authlogic_facebook_connect/Session.rb方法 “authenticating_with_facebook_connect?”被称为某种回调,并且控制器被定义,但缺少'set_facebook_session'方法。

def authenticating_with_facebook_connect? 
    controller.set_facebook_session 
    attempted_record.nil? && errors.empty? && controller.facebook_session 
    end 

我不明白为什么黄瓜测试没有用这种方法加载控制器。 我也在开发和黄瓜环境中测试应用程序,一切都很完美。

这里是完整的黄瓜输出。

Feature: Authentication 
    In order to keep security a user should only be able to edit their own profile 

    Background:        # features/authorization.feature:4 
    Given a valid user record for joe_runner # features/step_definitions/user_steps.rb:4 
     undefined method `set_facebook_session' for nil:NilClass (NoMethodError) 
     ./vendor/plugins/authlogic/lib/authlogic/controller_adapters/abstract_adapter.rb:63:in `send' 
     ./vendor/plugins/authlogic/lib/authlogic/controller_adapters/abstract_adapter.rb:63:in `method_missing' 
     ./vendor/plugins/authlogic_facebook_connect/lib/authlogic_facebook_connect/session.rb:132:in `authenticating_with_facebook_connect?' 
     ./vendor/plugins/authlogic/lib/authlogic/session/callbacks.rb:83:in `validate' 
     ./vendor/plugins/authlogic/lib/authlogic/session/validation.rb:64:in `valid?' 
     ./vendor/plugins/authlogic/lib/authlogic/session/existence.rb:65:in `save' 
     ./vendor/plugins/authlogic/lib/authlogic/session/existence.rb:30:in `create' 
     ./vendor/plugins/authlogic/lib/authlogic/acts_as_authentic/session_maintenance.rb:113:in `create_session' 
     ./vendor/plugins/authlogic/lib/authlogic/acts_as_authentic/session_maintenance.rb:103:in `maintain_sessions' 
     ./features/step_definitions/user_steps.rb:5:in `/^a valid user record for ([\w]*)$/' 
     features/authorization.feature:5:in `Given a valid user record for joe_runner' 

    Scenario: Jonathan can edit his profile but not other users profiles # features/authorization.feature:7 
    Given jonathan is logged in as an user        # features/step_definitions/user_steps.rb:13 
    When I go to my user edit page          # features/step_definitions/web_steps.rb:18 
    And I press "Update"            # features/step_definitions/web_steps.rb:22 
    Then I should see "Account updated!"        # features/step_definitions/web_steps.rb:142 
    When I go to joe_runner's user edit page       # features/step_definitions/web_steps.rb:18 
    Then I should see "You do not allowed to access to view that page" # features/step_definitions/web_steps.rb:142 

Failing Scenarios: 
cucumber features/authentication.feature:9 # Scenario: Signup 
cucumber features/authorization.feature:7 # Scenario: Jonathan can edit his profile but not other users profiles 

2 scenarios (2 failed) 
15 steps (2 failed, 13 skipped) 
0m0.173s 
rake aborted! 
Command failed with status (1): [/System/Library/Frameworks/Ruby.framework/...] 
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:995:in `sh' 
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:1010:in `call' 
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:1010:in `sh' 
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:1094:in `sh' 
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:1029:in `ruby' 
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:1094:in `ruby' 
/Library/Ruby/Gems/1.8/gems/cucumber-0.6.4/lib/cucumber/rake/task.rb:68:in `run' 
/Library/Ruby/Gems/1.8/gems/cucumber-0.6.4/lib/cucumber/rake/task.rb:138:in `define_task' 
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:636:in `call' 
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:636:in `execute' 
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:631:in `each' 
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:631:in `execute' 
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:597:in `invoke_with_call_chain' 
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/monitor.rb:242:in `synchronize' 
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:590:in `invoke_with_call_chain' 
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:607:in `invoke_prerequisites' 
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:604:in `each' 
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:604:in `invoke_prerequisites' 
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:596:in `invoke_with_call_chain' 
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/monitor.rb:242:in `synchronize' 
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:590:in `invoke_with_call_chain' 
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:583:in `invoke' 
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:2051:in `invoke_task' 
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:2029:in `top_level' 
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:2029:in `each' 
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:2029:in `top_level' 
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:2068:in `standard_exception_handling' 
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:2023:in `top_level' 
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:2001:in `run' 
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:2068:in `standard_exception_handling' 
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:1998:in `run' 
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/bin/rake:31 
/usr/bin/rake:19:in `load' 
/usr/bin/rake:19 
activespoon:base_project jspooner$ 

有几个博客,其中提供了如何测试黄瓜的Facebook应用程序,但他们并没有帮助,因为我的错误,这些之前谈到的例子的。
http://opensoul.org/2009/3/6/testing-facebook-with-cucumber
http://ryanbigg.com/2010/03/testing-facebook/

+0

你也可以看得到在github 源代码http://github.com/jspooner/authlogic_cucumber_rspec_example – jspooner 2010-05-03 19:06:50

回答