0
我是Rspec測試的新手,所以很抱歉如果我的代碼中的問題顯然是錯誤的。我試圖測試是否發送短信到我保存的Twilio號碼。Rspec控制器發佈使用Twilio Ruby創建
這裏是我的控制器/ messages_controller.rb
require 'twilio-ruby'
class MessagesController < AppController
include Webhookable
skip_before_action :verify_authenticity_token
skip_before_action :authenticate_user!
def create
Message.create!(parent_id: nil,
content_type: "sms",
content: params['Body'],
origin: params['From'].gsub("+1", ""),
destination: params['To'].gsub("+1", ""),
received_at: Time.now())
respond_to do |format|
format.all { render :nothing => true, :status => 200 }
end
end
end
這裏是我的規格/控制器/ messages_controller_spec.rb我曾經讓!()創建了一堆的創建方法的對象在其回調使用
require 'rails_helper'
RSpec.describe MessagesController, :type => :controller do
describe "#create" do
let(:message) { build(:message) }
let!(:hotel) { create(:hotel) }
let!(:group) { create(:group) }
let!(:guest) { create(:test_guest) }
let!(:user) { create(:user) }
let!(:visit) { create(:visit) }
let!(:group_user) { create(:group_user) }
context "when new text message comes in" do
it "saves the message" do
post :create, :Body => message.content, :From => message.origin, :To => message.destination
expect(Message.last).to be_truthy
end
end
end
end
這裏是失敗的消息時,我運行測試
Failures:
1) MessagesController#create when new text message comes in saves the message
Failure/Error: let!(:visit) { create(:visit) }
NoMethodError:
undefined method `users' for nil:NilClass
# ./app/models/hotel.rb:30:in `managers'
# ./app/models/concerns/visit_message.rb:9:in `create_check_in_messages'
# ./spec/controllers/messages_controller_spec.rb:10:in `block (3 levels) in <top (required)>'
從那裏我去一個核對型號/ hotel.rb:30
def managers
groups.first.users.managers.order("created_at ASC")
end
不過,我想,因爲我用讓!(:組){創建(:組)},當我跑這不會是零考試。任何方向或建設性的批評將不勝感激。
感謝您指出,我理解您的解釋。我做了調整,但是,我仍然從上面得到同樣的失敗。難道是因爲我沒有正確保存對象,所以當它進入「組」表時什麼也沒有?或者這是我需要將「經理」方法剔除的情況? –