RubyonRails——如何在rspec测试中访问示例变量

mf98qq94  于 2021-09-29  发布在  Java
关注(0)|答案(1)|浏览(394)

如何访问 pic 在我的rspec测试中?我不断得到以下错误:

  1. F
  2. Failures:
  3. 1) TrelloToAc::Card#pic return pic url from trello card
  4. Failure/Error: expect(result).to be_a String
  5. expected :pic to be a kind of String
  6. # ./spec/services/trello_to_ac/card_spec.rb:17:in `block (3 levels) in <top (required)>'
  7. Finished in 1.97 seconds (files took 13.5 seconds to load)
  8. 1 example, 1 failure
  9. Failed examples:
  10. rspec ./spec/services/trello_to_ac/card_spec.rb:14 # TrelloToAc::Card#pic return pic url from trello card

这似乎需要时间 pic 字面上,就像一根绳子。这是我的密码:
测试:

  1. require 'rails_helper'
  2. RSpec.describe TrelloToAc::Card do
  3. describe '#pic' do
  4. it 'return pic url from trello card' do
  5. result = @pic
  6. puts result
  7. expect(result).to be_a String
  8. end
  9. end
  10. end

正在测试的代码:

  1. class TrelloToAc::Card
  2. #
  3. #
  4. def pic
  5. @pic ||= card.attachments.last.url if card.attachments.any?
  6. end
  7. #
  8. #
  9. end
8yoxcaq7

8yoxcaq71#

这就是我最终解决这个问题的原因。我认为这与我的一些评论者所说的更为接近。这还提供了有关 pic 测试:

  1. require 'rails_helper'
  2. RSpec.describe TrelloToAc::Card do
  3. let(:trello_card) do
  4. cassette = 'trello_to_ac/cards/get'
  5. VCR.use_cassette(cassette, match_requests_on: [:method]) do
  6. Trello::Card.find 'itZmoIG4'
  7. end
  8. end
  9. let(:email_sent_label) do
  10. cassette = 'trello_to_ac/labels/get'
  11. VCR.use_cassette(cassette, match_requests_on: [:method]) do
  12. Trello::Label.find '60db99d5230c123a1ab808d0'
  13. end
  14. end
  15. let(:trello_to_ac_card) do
  16. TrelloToAc::Card.new(trello_card, 32188, 147, email_sent_label)
  17. end
  18. describe '#pic' do
  19. it 'returns pic url from trello card' do
  20. cassette = 'trello_to_ac/attachments/get'
  21. result = VCR.use_cassette(cassette, match_requests_on: [:method]) do
  22. trello_to_ac_card.pic
  23. end
  24. expect(result).to be_a String
  25. end
  26. end
  27. end

实际代码:

  1. class TrelloToAc::Card
  2. attr_reader(
  3. :card, :order_number, :list_ac_campaign_id, :email_sent_label
  4. )
  5. def initialize(card, order_number, list_ac_campaign_id, email_sent_label)
  6. @card = card
  7. @order_number = order_number
  8. @list_ac_campaign_id = list_ac_campaign_id
  9. @email_sent_label = email_sent_label
  10. end
  11. def send_email_if_needed
  12. #
  13. #
  14. attach_trello_pic_to_ac_contact if pic
  15. #
  16. #
  17. end
  18. def pic
  19. @pic ||= card.attachments.last.url if card.attachments.any?
  20. end
  21. end

这样,我测试的是类的一个示例,而不是示例变量。我对其他方法也有类似的测试。

展开查看全部

相关问题