TDD(测试驱动),是要在实现controller和model方法之前先写测试方法。一般为rspec spec/..,为了提速可以尝试在前面加spring。
测试变量:
测试变量以及数据库都是在test数据库中被生成,应此不可将rails初始生成的三个数据库混淆,在运行测试特别是model的测试之前最好先预先创建test数据库, rake db:test:prepare。应当注意的是,每个测试文件的数据都独立生成的,就算是使用预先定义的全局变量,也需要在方法中声明。
let(:user){create(:name)}可以实现方法变量的创建,一般范围为当前的describe,也可以新建一个helper用来统一定义常用的变量,这里定义的变量可以不用前缀@即可达到在全局范围内的应用。另一种方案是在before方法中,定义@前缀的变量,这些变量可以在当前文件内应用。
命名原则:
rspec中的命名原则应当追求简洁,准确并且面向测试人员。太多实现性的东西往往会影响测试可读性,因此尽量避免在描述中添加“返回值测试”之类的语言,最好能将其转义为人类友好的语言描述。
测试编写:
测试的编写应当尽量考虑所有可能存在的边界条件,一个好的测试可以在很大程度上降低代码重构的难度,从而实现代码的精简。