我如何使用rspec来测试ruby中的实例方法?

时间:2015-10-09 05:42:03

标签: ruby rspec

我有一个实例方法,可以在创建类的新实例后调用。

如何在Rspec中测试它?我使用以下内容并收到错误:

  let(:schedule) { ScheduleKaya.new('test-client-id') }
  let(:schedule) { schedule.create_recurring_event('test-keyword', 'slack') }

换句话说,我想创建实例。然后我想应用方法create_recurring_event

我的测试想检查它是否已将变量分配给实例。

it "has @keyword = test-keyword" do

     expect(schedule.keyword).to eq('test-keyword')

end

因为它进行了数据库调用,所以我想检查来自调用的响应,看看我的状态是否为200.

但我似乎无法创建实例然后应用该方法。

问题:

测试实例方法的正确方法是什么,在创建新实例后应用该方法。

2 个答案:

答案 0 :(得分:1)

let块的作用类似于方法,并返回最后一个语句的返回值。因此,只需将两者写入同一个块并确保返回正确的值:

let(:schedule) do
  schedule_kaya = ScheduleKaya.new('test-client-id')
  schedule_kaya.create_recurring_event('test-keyword', 'slack')
  schedule_kaya
end

或者您可以使用tap

let(:schedule) do
  ScheduleKaya.new('test-client-id').tap do |schedule_kaya|
    schedule_kaya.create_recurring_event('test-keyword', 'slack')
  end
end

答案 1 :(得分:0)

如果您使用的是Rails FactoryGirl,我建议将factory_girl_rails与Rspec一起使用,如下所示:

it "has @keyword = test-keyword" do
  schedule = Factory(:shcedule, keyword: "has @keyword = test-keyword")
  expect(schedule.keyword).to eq('test-keyword')
end