【发布时间】:2021-09-28 05:04:16
【问题描述】:
如何在我的 rspec 测试中访问 pic?我不断收到以下错误:
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。您实际上并不想访问实例变量——您想访问它的阅读器。 -
expect(subject.pic).to be_a String其中subject是您在规范中拥有的实例。 -
如果您真的想明确地测试
@pic的值(提示:我99% 确定您不这样做),那么您可以这样做:@987654330 @ -
但是,您目前向我们展示的内容作为测试实际上没有意义。一种或另一种方式,您需要调用
TrelloToAc::Card.new.pic- 即您实际测试该类,而不仅仅是在该类的上下文之外完全分配一个实例变量。
标签: ruby-on-rails ruby rspec rspec-rails