我想使用黄瓜与水豚来测试我的Rails应用程序的Facebook注册过程,执行以下场景:
- @javascript
- Scenario: Connect account
- When I go to the home page
- And I press "Connect your Facebook account"
- And I fill in "test@address" for "Email"
- And I fill in "test" for "Password"
- And I press "Login"
- And I press "Allow"
- Then I should be on the dashboard page
人们如何处理基于浏览器的Facebook整合的集成测试问题?网络搜索仅显示了早于图形API的几个博客文章,并且它们似乎只讨论实现一个前提条件,它设置了一个表示已经登录到Facebook的用户的环境.
一些具体问题要解决:
如何模拟点击< fb:login-button>元件?我想出的最好的事情(但还没有测试)是手动点击元素上的点击事件.
一旦Facebook对话出现,Capybara是否可以访问它?怎么样?这是为了输入测试Facebook帐户的电子邮件地址和密码,并安装测试帐户的Facebook应用程序.
对于这个问题,一个人如何管理测试帐户? http://developers.facebook.com/docs/test_users/表示可以使用Graph API创建和删除测试用户,但API并不希望提供对测试帐户的电子邮件地址或密码的访问,这似乎无法用于测试此特定流程.
我相信我也是忽略其他重要的问题.我很好奇其他人如何攻击这个问题!
解决方法
我已经设法使用以下代码在rspec验收规范中工作:
https://gist.github.com/1084767
这使用mogli创建和销毁测试用户和capybara来编排浏览器测试.我相信你可以通过删除shared_context块和使用黄瓜之前/之后的钩子来获得它与黄瓜的工作,如:
- Before '@fb_test_user' do
- @fb_user = create_test_user(installed: false)
- end
- After '@fb_test_user' do
- @fb_user.destroy
- end
- World(FacebookIntegrationHelpers)