require 'calc'
RSpec.describe "A calc" do
before do
@calc = Calc.new
end
it "given 2 and 3, returns 5" do
expect(@calc.add(2, 3)).to eq(5)
end
it "given 5 and 8, returns 13" do
expect(@calc.add(5, 8)).to eq(13)
end
end
class Calc
def add(a, b)
a + b # 仮実装
end
end
[vagrant@localhost rspec]$ rspec
..
Finished in 0.00235 seconds (files took 0.11087 seconds to load)
2 examples, 0 failures
describeはcontextを書き換えることも可能。また、コマンドラインはrspec -fdとしても使われる。
pendding
require 'calc'
RSpec.describe Calc do
describe "when normal mode" do
it "given 2 and 3, returns 5" do
calc = Cal.new
expect(calc.add(2, 3)).to eq(5)
end
describe "when graph mode" do
it "draws graph" do
end
end
matcher:https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchers
expect(calc.add(2, 3)).to eq(5) #matcher
expect(calc.add(2, 3)).not_to eq(5) #matcher
expect(calc.add(2, 3)).to be true #matcher
expect(calc.add(2, 3)).to be false #matcher
expect(calc.add(2, 3)).to be > 10 #matcher
expect(calc.add(2, 3)).to be_between(1, 10).include #matcher
expect(calc).to respond_to(:add) #matcher
expect(calc.add(2, 3).integer?).to be true
subject
require 'calc'
RSpec.describe Calc do
subject(:calc){ Calc.new }
it {
# calc = Calc.new
expect(calc.add(2, 3)).to eq(5)
}
end
let
context "tax 5%" do
let(:tax){ 0.05 }
it { expect(calc.price(100, tax)).to eq(105)}
end
context "tax 8%" do
let(:tax){ 0.08 }
it { expect(calc.price(100, tax)).to eq(108)}
end
message expectation
class Calc
def initialize(logger)
@logger = logger
end
def add(a, b)
@logger.log
a + b
end
end