小编Dav*_*ban的帖子

为什么在挂钩后添加"sleep 1"会导致此Rspec/Capybara测试通过?

我使用的是rails 4.0.5,rspec 2.14.1,capybara 2.2.1,capybara-webkit 1.1.0和database_cleaner 1.2.0.我通过以下功能测试看到一些奇怪的行为(模拟用户在帖子上查看评论,将鼠标悬停在图标上以显示菜单,然后单击菜单项以删除评论):

let(:user){create(:user)}
let(:post){create(:post, author: user)}
let!(:comment){create(:comment, post: post, author: user)}

...

it "can delete a comment" do
  assert(page.has_css? "#comment-#{comment.id}")
  find("#comment-#{comment.id}-controls").trigger(:mouseover)
  find("#comment-#{comment.id} .comment-delete a").click
  assert(page.has_no_css? "#comment-#{comment.id}")
end
Run Code Online (Sandbox Code Playgroud)

这个测试大约80%的时间都失败了,总是由于从数据库中检索到一些记录nil- 我得到的NoMethodError: undefined method X for nil:NilClass,对于X的各种值.有时nil是被删除的注释,有时它是注释附加的帖子到,有时它是评论/帖子的作者.

如果我添加sleep 1到测试结束,它会通过:

it "can delete its own comment" do
  assert(page.has_css? "#comment-#{comment.id}")
  find("#comment-#{comment.id}-controls").trigger(:mouseover)
  find("#comment-#{comment.id} .comment-delete a").click
  assert(page.has_no_css? "#comment-#{comment.id}")
  sleep 1
end
Run Code Online (Sandbox Code Playgroud)

如果我放入sleep 1一个after区块,它也会通过.

知道为什么我得到这些NoMethodErrors,和/或为什么测试通过,如果我在完成所有工作后让它睡了一秒钟?

ruby rspec ruby-on-rails capybara capybara-webkit

7
推荐指数
1
解决办法
2037
查看次数

使用 OAuth 连接到 Linkedin 时,是否可以获取用户的非主要电子邮件地址?

我正在使用 Devise 和 omniauth-linkedin gem 允许用户使用 LinkedIn 帐户(Rails 4.1.8、Devise 3.4.0、 omniauth-linkedin 0.2.0)登录我的 Rails 应用程序。我从 LinkedIn 获取用户的主要电子邮件没有问题,但我想知道,是否有可能获得与用户的 LinkedIn 帐户相关联的所有电子邮件的列表,包括非主要电子邮件?

LinkedIn 文档 ( https://developer.linkedin.com/documents/authentication ) 没有说明如何做到这一点,但他们也没有说这是不可能的。

如果可能,我需要将哪些范围/字段添加到我的设计配置中?目前 config/devise.rb 中的相关行如下所示:

config.omniauth :linkedin, ENV['LINKEDIN_KEY'], ENV['LINKEDIN_SECRET'],
    scope: 'r_fullprofile r_emailaddress r_network w_messages',
    fields: ["id", "email-address", "first-name", "last-name", "headline",
             "industry", "picture-url", "public-profile-url", "location",
             "connections"]
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails oauth linkedin devise omniauth

5
推荐指数
1
解决办法
190
查看次数