Я работаю над некоторыми проверками rspec теперь, когда один из моих параметров инициализации является «чужим» классом, то есть я понятия не имею, откуда он. Он вводится из рамки, которую я использую. В моем коде мне нужно использовать этот объект для разных вещей, главным образом/исключительно для вызова методов для передачи данных на этот объект (без извлечения данных).RSpec издевается над всеми методами на объекте
Возможно ли полностью издеваться над объектом, чтобы я мог проверить, вызваны ли определенные неопределенные методы.
#an example of what this object could look like
let(:my_obscure_object) { RSpec.complete_mock } #NOTE: This does not work
...
it "verify .whatever method is called" do
expect(my_obscure_object).to receive(:whatever).with(some_data)
my_class.work
end
it "verify .sub_whatever method is called" do
expect(my_obscure_object.sub_thing).to receive(:sub_whatever).with(some_data)
my_class.work2
end
Метод, который я могу думать о себе, чтобы решить это сделать объект и незавершенная каждый возможный метод, который я, возможно, потребуется, как этот
#an example of a tedious method to solve my problem
let(:my_obscure_object) { Object.new }
before(:each) do
my_obscure_object.stub(:whatever) { nil }
my_obscure_object.stub(:whatever2) { nil }
my_obscure_object.stub(:whatever3) { nil }
my_obscure_object.stub(:whatever4) { nil }
my_obscure_object.stub(:whatever5) { nil }
ob = Object.new
ob.stub(:sub_whatever) { nil }
my_obscure_object.stub(:sub_thing) { ob }
end
...
it "verify .whatever method is called" do
expect(my_obscure_object).to receive(:whatever).with(some_data)
my_class.work
end
it "verify .sub_whatever method is called" do
expect(my_obscure_object.sub_thing).to receive(:sub_whatever).with(some_data)
my_class.work2
end
Есть ли решения моей проблемы?
Будет ли «затенять» класс? Борясь, чтобы найти значение ввода строки для двойного метода. – Automatico
№. Первый аргумент 'double' - это просто дескриптор, который можно использовать для целей отладки. Он игнорируется с точки зрения функциональности RSpec. –
Просто нашел его в документе. Строка - это всего лишь идентификатор. [См. Doc] (https://relishapp.com/rspec/rspec-mocks/docs) – Automatico