RSpec custom matcher `have_constant`
Suppose kita ingin memeriksa apakah suatu constant ada atau tidak ada di dalam sebuah class. Kita bisa saja memeriksa nya dengan:
RSpec.describe MyClass do
describe 'MY_CONSTANT' do
it { expect(described_class::MY_CONSTANT).not_to be_nill }
end
end
Tetapi kita bisa saja melakukannya dengan cara:
RSpec.describe MyClass do
describe 'MY_CONSTANT' do
it { is_expected.to have_constant(:MY_CONSTANT) }
end
end
Dengan memakai matcher have_constant
kode test jadi lebih mudah dibaca. Sayangnya baik rails maupun rspec tidak memiliki matcher have_constant
. Tetapi, kita bisa membuatnya dengan:
# spec/supports/have_constant
RSpec::Matchers.define :have_constant do |const|
match do |owner|
owner.const_defined?(const)
end
end
Setelah itu, kita hanya perlu require
custom matcher di rails_helper
.