Я хочу использовать RSpe c вместе с fastlane и выполнил настройку, предложенную RSpe c. Я хочу проверить в своих тестах, вызывается ли функция с правильными параметрами. Я использовал приведенный здесь пример кода для проверки именно этого: https://relishapp.com/rspec/rspec-mocks/v/3-2/docs/setting-constraints/matching-arguments
require 'spec_helper'
require 'rspec'
RSpec.describe "Constraining a message expectation using with" do
let(:dbl) { double }
before { expect(dbl).to receive(:foo).with(1, anything, /bar/) }
it "passes when the args match" do
dbl.foo(1, nil, "barn")
end
it "fails when the args do not match" do
dbl.foo(1, nil, "other")
end
end
Когда я выполняю это с помощью 'rspe c', это нормально. Нет ошибок и я получаю ожидаемый результат.
Однако, если я загружаю действия fastlane в мой файл spec_helper.rb, как этот
$LOAD_PATH.unshift File.expand_path('..', __dir__)
module SpecHelper
end
require 'fastlane'
Fastlane.load_actions
Fastlane.plugin_manager.load_plugins
Я внезапно получаю следующую ошибку:
Constraining a message expectation using with passes when the args match
Failure/Error: before { expect(dbl).to receive(:foo).with(1, anything, /bar/) }
ArgumentError:
wrong number of arguments (given 3, expected 0..1)
# /Users/philip.otto/.rvm/gems/ruby-2.6.0/gems/facets-3.1.0/lib/core/facets/kernel/with.rb:15:in `with'
# ./spec/iz_create_release_branch_spec.rb:8:in `block (2 levels) in <top (required)>'
Таким образом, проблема кажется чтобы неправильная функция 'with' была взята из другого модуля в facets / kernel / with.rb, а не из файлов rspec_mocks.
Как я могу убедиться, что вызывается правильная функция? Почему эта неправильная функция вызывается в первую очередь?
Заранее спасибо за помощь!