我相信你在找RSpec的
shared examples
:
# spec/support/shared_examples/a_calculator.rb
RSpec.shared_examples "a calculator" do
it 'should calculate some value' do
expect(x+y).to eq(result)
end
end
include_examples "name" # include the examples in the current context
it_behaves_like "name" # include the examples in a nested context
it_should_behave_like "name" # include the examples in a nested context
matching metadata # include the examples in the current context
可以通过传递块将上下文传递给共享示例:
require 'rails_helper'
require 'support/shared_examples/a_calculator'
RSpec.describe Api::MyController do
it_should_behave_like "a calculator" do
let(:x){ 1 }
let(:y){ 2 }
let(:result){ 3 }
end
end