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

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

被折叠的 条评论
为什么被折叠?



