[英]How to write RSpec test code for this code?
I am learning RSpec testing. 我正在学习RSpec测试。 Now I want to write about given below code's rspec , but I can't.
现在,我想写下面给出的代码rspec,但是我不能。
module FrontendHelper
def scholarship_style_change(scholarship)
array = []
if scholarship.discount >= 50 && scholarship.id.odd?
array = ['OliveDrab', 'box box-border']
elsif scholarship.discount >= 25 && scholarship.id.even?
array = ['FireBush', 'box box-theme']
else
array = ['Mojo', 'box box-dark']
end
array
end
end
Can anyone help me to write this method's rspec test code ? 谁能帮助我编写此方法的rspec测试代码?
Create a dummy class to extend the module and test the method through the class instance 创建一个虚拟类以扩展模块并通过类实例测试方法
before(:each) do
@helper_class = Class.new { extend FrontEndHelper}
@helper_class.extend(FrontEndHelper)
end
it "returns OliveDrab and box-border if discount above 50 and with odd id" do
scholarship = double("scholarship", discount: 55, id: 7)
@helper_class.scholarship_style_change(scholarship).should eq(['OliveDrab', 'box box-border'])
end
Here is the test code of the method: 这是该方法的测试代码:
RSpec.describe FrontendHelper, type: :helper do
describe '#scholarship_style_change(scholarship)' do
let!(:scholarship_group) { FactoryGirl.create :admin_scholarship_group }
let(:scholarship_50) { FactoryGirl.create :admin_scholarship, name: '50% off', discount: 50, condition: 'GPA 5', details: 'only GPA 5', group: scholarship_group }
let!(:scholarship_25) { FactoryGirl.create :admin_scholarship, name: '25% off', discount: 25, condition: 'GPA 4.25', details: 'only GPA 4.25', group: scholarship_group }
let!(:scholarship_20) { FactoryGirl.create :admin_scholarship, name: '20% off', discount: 20, condition: 'GPA 4', details: 'only GPA 4', group: scholarship_group }
let(:first_array) { ['OliveDrab', 'box box-border'] }
let(:second_array) { ['FireBush', 'box box-theme'] }
let(:third_array) { ['Mojo', 'box box-dark'] }
context 'checks above 50% scholarship' do
it 'returns first array' do
expect(scholarship_style_change(scholarship_50)).to eq(first_array)
end
it 'does not return second array' do
expect(scholarship_style_change(scholarship_50)).not_to eq(second_array)
end
it 'does not return third array' do
expect(scholarship_style_change(scholarship_50)).not_to eq(third_array)
end
end
context 'checks above 25% scholarship with even id' do
it 'does not return first array' do
expect(scholarship_style_change(scholarship_25)).not_to eq(first_array)
end
it 'does not return second array' do
expect(scholarship_style_change(scholarship_25)).not_to eq(second_array)
end
it 'returns third array' do
expect(scholarship_style_change(scholarship_25)).to eq(third_array)
end
end
context 'checks above 20% scholarship with odd id' do
it 'does not return first array' do
expect(scholarship_style_change(scholarship_20)).not_to eq(first_array)
end
it 'does not return second array' do
expect(scholarship_style_change(scholarship_20)).to eq(second_array)
end
it 'does_not return third array' do
expect(scholarship_style_change(scholarship_20)).not_to eq(third_array)
end
end
end
end
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.