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
不过,我想,因为我用让!(:组){创建(:组)},当我跑这不会是零考试。任何方向或建设性的批评将不胜感激。
感谢您指出,我理解您的解释。我做了调整,但是,我仍然从上面得到同样的失败。难道是因为我没有正确保存对象,所以当它进入“组”表时什么也没有?或者这是我需要将“经理”方法剔除的情况? –