ruby-on-rails - 如何在 rspec 测试中访问实例变量
问题描述
如何pic
在我的 rspec 测试中访问?我不断收到以下错误:
F
Failures:
1) TrelloToAc::Card#pic return pic url from trello card
Failure/Error: expect(result).to be_a String
expected :pic to be a kind of String
# ./spec/services/trello_to_ac/card_spec.rb:17:in `block (3 levels) in <top (required)>'
Finished in 1.97 seconds (files took 13.5 seconds to load)
1 example, 1 failure
Failed examples:
rspec ./spec/services/trello_to_ac/card_spec.rb:14 # TrelloToAc::Card#pic return pic url from trello card
它似乎是从pic
字面上理解的,就像一个字符串。这是我的代码:
测试:
require 'rails_helper'
RSpec.describe TrelloToAc::Card do
describe '#pic' do
it 'return pic url from trello card' do
result = @pic
puts result
expect(result).to be_a String
end
end
end
正在测试的代码:
class TrelloToAc::Card
#
#
def pic
@pic ||= card.attachments.last.url if card.attachments.any?
end
#
#
end
解决方案
这就是我最终解决这个问题的方式。我认为这更像是我的一些评论者所说的。这也提供了有关上下文的更多信息pic
测试:
require 'rails_helper'
RSpec.describe TrelloToAc::Card do
let(:trello_card) do
cassette = 'trello_to_ac/cards/get'
VCR.use_cassette(cassette, match_requests_on: [:method]) do
Trello::Card.find 'itZmoIG4'
end
end
let(:email_sent_label) do
cassette = 'trello_to_ac/labels/get'
VCR.use_cassette(cassette, match_requests_on: [:method]) do
Trello::Label.find '60db99d5230c123a1ab808d0'
end
end
let(:trello_to_ac_card) do
TrelloToAc::Card.new(trello_card, 32188, 147, email_sent_label)
end
describe '#pic' do
it 'returns pic url from trello card' do
cassette = 'trello_to_ac/attachments/get'
result = VCR.use_cassette(cassette, match_requests_on: [:method]) do
trello_to_ac_card.pic
end
expect(result).to be_a String
end
end
end
实际代码:
class TrelloToAc::Card
attr_reader(
:card, :order_number, :list_ac_campaign_id, :email_sent_label
)
def initialize(card, order_number, list_ac_campaign_id, email_sent_label)
@card = card
@order_number = order_number
@list_ac_campaign_id = list_ac_campaign_id
@email_sent_label = email_sent_label
end
def send_email_if_needed
#
#
attach_trello_pic_to_ac_contact if pic
#
#
end
def pic
@pic ||= card.attachments.last.url if card.attachments.any?
end
end
这样我正在测试类的实例,而不是实例变量。我对其他方法也有类似的测试。
推荐阅读
- javascript - 我们可以使用 jquery 定位具有 (data-toggle="collapse") 属性且没有类的元素吗?
- vba - 格式化字符串中的数字而不在 Excel 中提取它们
- ios - 在 ios swift coredata 中获取相关数据
- big-o - 简化 Big-o 符号
- c# - cookie 中的 JWT 令牌如何更新?
- angularjs - Angularjs - 如何在不重新加载父级的情况下仅重新加载子状态
- eclipse - 如何在运行时启用/禁用“org.eclipse.ui.editors”扩展
- php - 如何从一维数组创建具有关联子数组的数组?
- tomcat - 使用 Tomcat 进行家庭服务器组织
- r - 如何将手段添加到 ggplot + geom_point 图