gpt4 book ai didi

ruby-on-rails - 在 Rails Controller 中测试 JS 操作,响应始终为空

转载 作者:太空宇宙 更新时间:2023-11-03 18:11:02 24 4
gpt4 key购买 nike

有意见:

# views/users/index.html.erb
<%= link_to 'Destroy', user_destroy_path(user), remote: :true %>

进行销毁操作:

# controllers/users_controller.rb
respond_to :js

def destroy
@user = user.find(params.require(:id))
@user.destroy
end

呈现:

# views/users/destroy.js.erb
$('#some_div').html('Bye Bye' + user.name);

我想为它编写 Controller 测试

# spec/controllers/users_controller_spec.rb
describe UsersController do
it 'says goodbye' do
delete :destroy, id: user
expect(response.body).to include('Bye Bye #{user.name}')
end
end

但是“response.body”总是空字符串。为什么?如何查看js响应内容?

最佳答案

你需要告诉 Rspec 渲染 View 。默认情况下不会。

require "spec_helper"

describe UsersController, type: :controller do
render_views

it 'says goodbye' do
delete :destroy, id: user
expect(response.body).to include("Bye Bye #{user.name}")
end
end

但是,由于您依赖于 JavaScript,因此您将无法找到文本,因为它只会返回 HTML。

为了使其正常工作,您需要使用实际的浏览器,因此这意味着使用 PhantomJS 之类的功能规范(有关 capybara ,请参阅 poltergeist gem),或移至 Cucumber .

然后您的测试将从用户的角度断言某些事情,如下所示:

it 'says goodbye', js: true do
visit home_page
click_button 'Log out'
expect(page).to have_content("Bye Bye #{user.name}")
end

关于ruby-on-rails - 在 Rails Controller 中测试 JS 操作,响应始终为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34201562/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com