测试 RSpec/Minitest
RSpec describe/it/expect、Minitest 断言、测试驱动开发
测试 RSpec/Minitest
RSpec 是 Ruby 世界最流行的测试框架——describe/it/expect 读起来像英文。Minitest 是 Rails 默认。
学完本章你将: 掌握 RSpec describe/it/expect、Minitest 断言。
RSpec
ruby
# spec/calculator_spec.rb
require "rspec"
require_relative "calculator"
RSpec.describe Calculator do
describe "#add" do
it "两个正数相加" do
calc = Calculator.new
expect(calc.add(2, 3)).to eq(5)
end
it "负数相加" do
calc = Calculator.new
expect(calc.add(-1, -1)).to eq(-2)
end
end
describe "#divide" do
it "除零抛出异常" do
calc = Calculator.new
expect { calc.divide(10, 0) }.to raise_error(ArgumentError)
end
end
# 上下文
context "当用户已登录" do
before { login_as(user) }
it { expect(response).to be_successful }
end
end
bash
rspec spec/calculator_spec.rb
Minitest
ruby
require "minitest/autorun"
class CalculatorTest < Minitest::Test
def test_add
calc = Calculator.new
assert_equal 5, calc.add(2, 3)
assert calc.add(2, 3) > 0
end
def test_divide_by_zero
calc = Calculator.new
assert_raises(ArgumentError) { calc.divide(10, 0) }
end
end