Ruby on rails Rails测试:断言呈现操作
如何编写一个测试来断言动作Ruby on rails Rails测试:断言呈现操作,ruby-on-rails,testing,Ruby On Rails,Testing,如何编写一个测试来断言动作new已呈现 def method ... render :action => :new end 我正在寻找类似于下面几行的内容,但要断言调用的是操作,而不是模板: assert_equal layout, @response.layout assert_equal format, @request.format 我知道我不能做@response.action 提前谢谢 黛比:我原来的答案是错的。正如@Mohammad El Abid所示,正确的方法是
new
已呈现
def method
...
render :action => :new
end
我正在寻找类似于下面几行的内容,但要断言调用的是操作,而不是模板:
assert_equal layout, @response.layout
assert_equal format, @request.format
我知道我不能做@response.action
提前谢谢
黛比:我原来的答案是错的。正如@Mohammad El Abid所示,正确的方法是:
assert_template :new
assert_template :new
原始答复:
将呈现视图,并调用操作。
试试这个:
@controller.expected(:new)
假设您有一个用于创建的控制器操作,如下所示:
def create
@post = Post.new(params[:post])
respond_to do |format|
if @post.save
format.html { redirect_to(@post, :notice => 'Post was successfully created.') }
format.xml { render :xml => @post, :status => :created, :location => @post }
else
format.html { render :action => "new" }
format.xml { render :xml => @post.errors, :status => :unprocessable_entity }
end
end
end
这是标准脚手架的“新”视图
如果这仍然不能让你的船浮起来,我甚至会添加一个assert_标记来确保一些视图出现,这样你就知道它会显示/呈现给最终用户
希望这能有所帮助。对于未来发现这一点的人,正确的方法是:
assert_template :new
assert_template :new
从Rails 5.0.0开始,您可以通过测试显示的模板来测试操作是否正确呈现 首先需要将
rails控制器测试gem添加到gem文件中(因为它是从版本5开始在rails外部提取的)。然后,在测试中,只需使用:
assert\u template:new
此测试是否调用了操作方法。操作可以呈现它选择的任何视图,甚至可以重定向。文档链接: