Created
February 10, 2018 03:53
-
-
Save pdabrowski6/1c8bcc39d5067e7e2d7304369255f265 to your computer and use it in GitHub Desktop.
Avoid let and before blocks in your test when you don't really have to use them
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# user.rb file | |
class User | |
attr_reader :admin | |
def initialize(admin: false) | |
@admin = admin | |
end | |
end | |
# user_service.rb file | |
class UserService | |
def initialize(user:) | |
@user = user | |
end | |
def name | |
if user.admin | |
"ADMIN username" | |
else | |
"username" | |
end | |
end | |
private | |
attr_accessor :user | |
end | |
# Benchmarks using https://github.com/SamSaffron/memory_profiler gem | |
require './user' | |
require './user_service' | |
require 'memory_profiler' | |
report = MemoryProfiler.report do | |
describe UserService do | |
describe '#name' do | |
it 'returns username with admin prefix when user is admin' do | |
user = User.new(admin: true) | |
user_service = UserService.new(user: user) | |
expect(user_service.name).to eq('ADMIN username') | |
end | |
it 'returns username' do | |
user = User.new(admin: false) | |
user_service = UserService.new(user: user) | |
expect(user_service.name).to eq('username') | |
end | |
end | |
# describe '#name' do | |
# let(:user_service) { UserService.new(user: user) } | |
# let(:user) { User.new } | |
# before do | |
# allow(user).to receive(:admin).and_return(admin_user) | |
# end | |
# context 'when user is admin' do | |
# let(:admin_user) { true } | |
# it 'returns username with admin prefix' do | |
# expect(user_service.name).to eq('ADMIN username') | |
# end | |
# end | |
# context 'when user is not admin' do | |
# let(:admin_user) { false } | |
# it 'returns username without admin prefix' do | |
# expect(user_service.name).to eq('username') | |
# end | |
# end | |
# end | |
end | |
end | |
report.pretty_print |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Version with
let
andbefore
:Version without
let
andbefore
: