rec*_*nym 8 ruby rspec ruby-on-rails
我想测试我的控制器动作是否呈现局部.
我四处乱逛,似乎找不到任何可行的东西.
创造行动:
def create
@project = Project.new...
respond_to do |format|
if @project.save
format.js { render :partial => "projects/form" }
end
end
end
Run Code Online (Sandbox Code Playgroud)
规格:
it "should save and render partial" do
....
#I expected/hoped this would work
response.should render_partial("projects/form")
#or even hopefully
response.should render_template("projects/form")
#no dice
end
Run Code Online (Sandbox Code Playgroud)
Blu*_*ish 49
如果你正在寻找一个真实的答案......(即完全在RSpec而不是使用Capybara),RSpec文档说render_template是assert_template的包装器.assert_template(根据文档)还表明您可以通过包含:partial键来检查部分是否已呈现.
放手一搏......
it { should render_template(:partial => '_partialname') }
Run Code Online (Sandbox Code Playgroud)
更新见下面bluefish的答案,这似乎是正确的答案
您会考虑使用Capybara进行集成测试吗?我发现 ajax 很难单独使用 rspec 进行测试。就您而言,我什至不确定您是否收到回复。在水豚中,它等待 ajax 调用完成,您可以调用 page.has_xxxx 来查看它是否已更新。这是一个例子:
it "should flash a successful message" do
visit edit_gallery_path(@gallery)
fill_in "gallery_name", :with => "testvalue"
click_button("Update")
page.has_selector?("div#flash", :text => "Gallery updated.")
page.has_content?("Gallery updated")
click_link "Sign out"
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9653 次 |
| 最近记录: |