- RSpec 教程
- RSpec - 主页
- RSpec - 简介
- RSpec - 基本语法
- RSpec - 编写规范
- RSpec - 匹配器
- RSpec - 测试替身
- RSpec - 存根
- RSpec - 挂钩
- RSpec - 标记
- RSpec - 主题
- RSpec - 辅助工具
- RSpec - 元数据
- RSpec - 筛选
- RSpec - 期望
- RSpec 资源
- RSpec - 快速指南
- RSpec - 有用的资源
- RSpec - 讨论
RSpec - 辅助工具
有时,你的 RSpec 示例需要一种简单的方法来共享可重用的代码。实现这一目标的最佳方法是使用辅助工具。辅助工具基本上是你可以跨多个示例共享的常规 Ruby 方法。为了说明使用辅助工具的好处,我们来考虑一下这段代码 −
class Dog
attr_reader :good_dog, :has_been_walked
def initialize(good_or_not)
@good_dog = good_or_not
@has_been_walked = false
end
def walk_dog
@has_been_walked = true
end
end
describe Dog do
it 'should be able to create and walk a good dog' do
dog = Dog.new(true)
dog.walk_dog
expect(dog.good_dog).to be true
expect(dog.has_been_walked).to be true
end
it 'should be able to create and walk a bad dog' do
dog = Dog.new(false)
dog.walk_dog
expect(dog.good_dog).to be false
expect(dog.has_been_walked).to be true
end
end
这段代码很清晰,但尽可能减少重复的代码始终是一个好建议。我们可以使用名为 create_and_walk_dog() 的辅助方法来获取以上代码并减少其中的某些重复项。
class Dog
attr_reader :good_dog, :has_been_walked
def initialize(good_or_not)
@good_dog = good_or_not
@has_been_walked = false
end
def walk_dog
@has_been_walked = true
end
end
describe Dog do
def create_and_walk_dog(good_or_bad)
dog = Dog.new(good_or_bad)
dog.walk_dog
return dog
end
it 'should be able to create and walk a good dog' do
dog = create_and_walk_dog(true)
expect(dog.good_dog).to be true
expect(dog.has_been_walked).to be true
end
it 'should be able to create and walk a bad dog' do
dog = create_and_walk_dog(false)
expect(dog.good_dog).to be false
expect(dog.has_been_walked).to be true
end
end
当你运行以上代码时,你将会看到以下输出 −
.. Finished in 0.002 seconds (files took 0.11401 seconds to load) 2 examples, 0 failures
正如你所看到的,我们能够将创建和遛狗对象添加到一个辅助工具中,这样一来,我们的示例就会更简短并且清晰。
广告