Capybara + phantomjs =已完成401未经授权

时间:2014-11-25 20:10:05

标签: ruby-on-rails rspec capybara phantomjs poltergeist

我正在尝试测试PageVote的创建。它工作得很好:用户点击图片,创建PageVote

但用capybara和phantomjs测试它不起作用=(

这是测试:

it "should change the PageVote after clicking on a vote link", js: true do
   visit page_path( @page, locale: :ru )
   expect( PageVote.count ).to eq(0)
   find("#vote-5").click
   expect( PageVote.count ).to eq(1)
end

控制器

def create
    Rails.logger.debug "Count before: " + PageVote.count.to_s
    @page = Page.find( params[ :page ] )
    @vote = PageVote.new( ip_address: request.env['REMOTE_ADDR'], vote: params[ :vote ], page: @page )
    @vote.save

    Rails.logger.debug "Count after: " + PageVote.count.to_s

    respond_to do |format|
      format.html { redirect_to page_path( @page ) }
      format.js
    end
end

测试日志

Started POST "/ru/page_votes?page=1&vote=5" for 127.0.0.1 at 2014-11-25 22:51:04 +0300
[1m[35m (9.0ms)[0m  SELECT COUNT(*) FROM "page_votes"
Processing by PageVotesController#create as JS
Parameters: {"page"=>"1", "vote"=>"5", "locale"=>"ru"}

[1m [36m(2.0ms)[0m [1mROLLBACK [0m     [1m [35m(1.0ms)[0m SELECT COUNT()FROM“page_votes”     前点数:0     [1m [36mPage Load(2.0ms)[0m [1mSELECT“pages”。 FROM“pages”INNER JOIN“page_translations”ON“page_translations”。“page_id”=“pages”。“id”WHERE“page_translations” 。“locale”='ru'和“pages”。“id”= $ 1 LIMIT 1 [0m [[“id”,1]]     [1m [35mPage ::翻译负载(1.0ms)[0m SELECT“page_translations”。* FROM“page_translations”WHERE“page_translations”。“page_id”IN(1)     [1m [36m(2.0ms)[0m [1mBEGIN [0m     [1m [35m(0.0ms)[0m COMMIT     已完成401未经授权的38毫秒

无需进行身份验证即可进行投票。

有人知道该怎么办吗?

1 个答案:

答案 0 :(得分:1)

我最终检查了输出,而不是模型计数

expect(page).to have_content("...")

如果有人知道,如何检查计数 - 非常欢迎您=)