我编写了一个非常简单的插件(在Rails guide之后),它向has_sex
添加了ActiveRecord::Base
方法,在调用时添加了一些实例方法(用于获取相应的方法)代词等等到模型和validates :sex, inclusion: {in: %w(male female)}
。
我应该如何在使用它的模型上编写单元测试?
我可以测试Person < HasSex::InstanceMethods
,如果在Person上调用了has_sex
,那将是真的(并且插件测试确保产生所需的行为)。但我想知道这是否真的测试实现而不是行为?
另一方面,我可以测试Person.sex
是否只允许值'男性'和'女性',并且各种实例方法都具有所需的效果,但后来我复制了我为其编写的测试插件本身。
这里最好的方法是什么?为了记录,我正在测试Test :: Unit和Shoulda,但我对原理更感兴趣而不是更精细的细节。