我正在尝试测试一个 ruby 控制器方法,并且我期望数据库中的多个内容会发生变化。
context "With an unknown user" do
let(:unknown_phone_number) { "0000000000" }
subject {post :create, twiml_message(unknown_phone_number, "YES", "To" => twilio_phone_number) }
it { response.should change(Card, :count).by(1) }
it { should change(User, :count).by(1) }
it { should change(Customer, :count).by(1) }```
end
给出错误
NoMethodError: undefined method `call' for #<ActionController::TestResponse:0x007fbd5d643030> ./spec/controllers/api/v1/sms_controller_spec.rb:25:in `block (4 levels) in <top (required)>'```
我错过了什么,或者我在吠叫完全错误的树?
版本信息:Rails 1.9.3 Rspec 2.11.0
更新:基于答案
it "registers an unknown user" do
unknown_phone_number = "0000000000"
expect {
post :create, twiml_message(unknown_phone_number, "YES", "To" => twilio_phone_number)
}.to change(Card, :count).by(1)
open_last_text_message_for unknown_phone_number
current_text_message.should have_body "Welcome to OnTab. You are now registered with a test account. To get started text TAB to open a tab."
end
it "registers an unknown user" do
unknown_phone_number = "0000000000"
expect {
post :create, twiml_message(unknown_phone_number, "YES", "To" => twilio_phone_number)
}.to change(Customer, :count).by(1)
open_last_text_message_for unknown_phone_number
current_text_message.should have_body "Welcome to OnTab. You are now registered with a test account. To get started text TAB to open a tab."
end
it "registers an unknown user" do
unknown_phone_number = "0000000000"
expect {
post :create, twiml_message(unknown_phone_number, "YES", "To" => twilio_phone_number)
}.to change(User, :count).by(1)
open_last_text_message_for unknown_phone_number
current_text_message.should have_body "Welcome to OnTab. You are now registered with a test account. To get started text TAB to open a tab."
end
但这会运行 3 次 post 操作。有什么办法可以做到这一点,但只执行一次POST?