关于 RSpec 的一点方法总结
2017年7月23日 17:07
注:原文翻译时有删改
两个主要的框架垄断了Ruby的测试界:Rspec 和 MiniTest. Rspec 是一个非常有表现力的测试框架,它有很多好的特性和辅助方法来让测试变得可读。当我们用 Rspec 写测试的时候,有几个小的方法,或许可以让测试更好写、更易读、更利于维护。
现在假设有一个系统,有书(Books
) 和 作者(Authors
),让我们使用一些方法来简化测试。
class Book
attr_reader :title, :genre
def initialize(title, genre)
@title = title
@genre = genre
end
end
class Author
attr_reader :books
def initialize(name, books)
@name = name
@books = Array(books)
end
def has_written_a_book?
!books.empty?
end
end
let 和 subject
let()
有两个好处: - 不用赋值给实例变量就可以缓存值; - 定义的变量是“惰性计算”的,不调用就不会执行赋值操作;
subject{}
可用来声明测试的对象,后续的测试用例就无需明确指定了。
通过声明 let
和 subject
变量是一个保持测试可读性和不重复自己(DRY)的好方法。
举个例子,如果我们想确认一个作者有名字(assert an Author
has a name
),如果不用 let
和 subject
变量,测试大概长这样:
describe Author do...
剩余内容已隐藏
查看完整文章以阅读更多