Authlogic Facebook Connect 和 Cucumber
我将 authlogic_facebook_connect 插件添加到我的项目中,现在我在运行黄瓜测试时遇到问题,因为无方法错误。
undefined method `set_facebook_session' for nil:NilClass (NoMethodError)
在 authlogic_facebook_connect/Session.rb 中,方法“authentication_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$
有几个博客提供了如何使用 Cucumber 测试 facebook 应用程序的示例,但它们没有帮助,因为我的错误出现在这些之前。
http://opensoul.org/2009/3/6/testing- facebook-with-cucumber
http://ryanbigg.com/2010/03/testing-facebook/
I added the authlogic_facebook_connect plugin to my project and I'm now having problem running my cucumber test because of a NoMethodError.
undefined method `set_facebook_session' for nil:NilClass (NoMethodError)
In authlogic_facebook_connect/Session.rb the method "authenticating_with_facebook_connect?" is called as some sort of callback and the controller is defined but is missing the 'set_facebook_session' method.
def authenticating_with_facebook_connect?
controller.set_facebook_session
attempted_record.nil? && errors.empty? && controller.facebook_session
end
I don't understand why the cucumber test is not loading the controller with this method.
I also test the app in development and cucumber environments and everything works perfect.
Here is the full cucumber output.
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$
There are a couple of blogs that give examples on how to test facebook apps with cucumber but they didn't help because my error comes before these.
http://opensoul.org/2009/3/6/testing-facebook-with-cucumber
http://ryanbigg.com/2010/03/testing-facebook/
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
安装 authlogic_facebook_connect 后,我的测试套件也遇到了同样的问题。
我对插件应用了以下补丁,它解决了问题:
http://gist.github.com/221893< /a>
I had the same issue with my test suite after installing authlogic_facebook_connect.
I applied the following patch to the plugin and it solved the problem:
http://gist.github.com/221893