1
所以我沒有很好的理由需要知道這一點,而不是好奇 - 最好的理由 - 但我不知道這裏發生了什麼。如何確定rspec控制器測試的主題?
背景:
我正在通過RSpec書籍和更新示例。
在第24章 - Rails控制器上,有一個消息控制器測試。
## spec/controllers/messages_controller_spec.rb ##
require 'spec_helper'
describe MessagesController do
describe "POST create" do
let(:message) { mock_model(Message).as_null_object }
before do
Message.stub(:new).and_return(message)
end
# Then a bunch of Tests...
context "when the message fails to save" do
before do
message.stub(:save).and_return(false)
post :create
end
it "assigns @message" do
assigns[:message].should eq(message)
end
it "renders the new template" do
response.should render_template("new")
end
end
end
end
這與消息控制器隨之而來:
## app/controllers/messages_controller.rb ##
class MessagesController < ApplicationController
def create
@message = Message.new(params[:message])
if @message.save
flash[:notice] = "The message was saved successfully"
redirect_to action: "index"
else
render "new"
end
end
end
當運行測試:
測試通過與響應。
it "renders the new template" do
response.should render_template("new")
end
該測試也通過與受試者。
it "renders the new template" do
subject.should render_template("new")
end
測試還與頁轉到
it "renders the new template" do
page.should render_template("new")
end
測試也與NOTHING
it "renders the new template" do
should render_template("new")
end
通過在情況下,它可以幫助任何人做的這個正面或反面,則config/routes.rb
剛剛有resources :messages
爲什麼所有這些測試都通過?我究竟在測試什麼?是「頁面」,「主題」還是「響應的同義詞」? 只要我的測試通過了,它是否重要?
這並沒有真正回答這個問題,但這主要是我的錯,因爲不清楚。什麼是迴應?這裏實際發生了什麼。響應只是一個附加到MessagesController類的對象嗎?對不起,要求澄清。我想接受答案,但我仍然不明白這裏發生了什麼。 –
查看文檔http://guides.rubyonrails.org/v2.3.11/action_controller_overview.html#the-response-object,是MessagesController類的響應,在測試控制器中,如果你使用'it ... 「塊」將把主體定義爲階級本身,這在術語上應該等同於我相信的迴應對象 – jamesy829