Rails 单元测试

Rails项目随着规模扩大,单元测试成为必要。本文介绍如何使用RSpec进行自动化测试,通过创建.rspect配置文件,测试数字处理逻辑:当数字为3, 5, 7的倍数时,返回特定字符串。文章包含测试文件的创建和执行过程。" 136432931,8750138,华为OD机试:基于C++的开源项目热度排名算法,"['华为机考', '华为机试', 'C++编程', '数据结构', '算法']

Rails 自动化单元测试,是 Rails 项目足够大之后,必备流程。Rails 社区流行的测试工具是——rspec

参考资料:

推荐博客:

简易版测试

rails new rails_test
cd rails_test
git init
git commit -m "first commit"
git checkout -b ch01

终端执行 gem install rspec

新增一个档案 .rspec,内容如下:

--format documentation

--color
单元测试需求

输入一个数字,范围在1到100。遇到数字为3的倍数的时候,返回“Fizz”替代数字;遇到5的倍数,返回“Buzz”代替数字;遇到7的倍数,返回“Zoo”代替数字;既是3的倍数又是5的倍数,返回“FizzBuzz”;既是3的倍数又是7的倍数,返回“FizzZoo”;既是5的倍数又是7的倍数,返回“BuzzZoo”;

建立被测试文件 number.rb

def number_text(x)
  if x%3 == 0 && x%5 == 0
    "FizzBuzz"
  elsif x%3 == 0 && x%7 == 0
    "FizzZoo"
  elsif x%5 == 0 && x%7 == 0
    "BuzzZoo"
  elsif x%3 == 0
    "Fizz"
  elsif x%5 == 0
    "Buzz"
  elsif x%7 == 0
    "Zoo"
  else
    x
  end
end

建立测试文件number_spec.rb

require_relative './number'
describe "Number_Spec" do
  it "9 is Fizz" do
    result = number_text(9)
    expect(result).to eq("Fizz")
  end

  it "21 is FizzZoo" do
    result = number_text(21)
    expect(result).to eq("FizzZoo")
  end

  it "45 is FizzBuzz" do
    result = number_text(45)
    expect(result).to eq("FizzBuzz")
  end

  it "55 is Buzz" do
    result = number_text(55)
    expect(result).to eq("Buzz")
  end

  it "35 is BuzzZoo" do
    result = number_text(35)
    expect(result).to eq("BuzzZoo")
  end

  it "77 is Zoo" do
    result = number_text(77)
    expect(result).to eq("Zoo")
  end

  it "88 is 88" do
    result = number_text(88)
    expect(result).to eq(88)
  end
end

终端执行 rspec number_spec.rb

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值