Facebook 出品的一个 js 测试框架 Jest 最近推出一个新功能,给第一次跑测试的结果生成一个快照,后面就可以用这个快照来保证代码不会被搞坏。
受 Jest 的启发,我觉得这个快照测试也可以用到 Rails 的 controller 和 view 测试中来,见 https://github.com/yesmeck/rspec-snapshot。
拿 Ruby China 的测试举个🌰,比如这个测试,利用 rspec-snapshot 的话可以写成这样:
it 'should work' do
@replies = create_list(:reply, 3, user: user, topic: topic)
get "/api/v3/users/#{user.login}/replies.json", offset: 0, limit: 2
expect(response.body).to match_snapshot('users/:login/replies')
end
这样只要在第一次写测试的时候保证生成的快照是正确的,后面就可以保证这个接口不会被不小心搞坏掉。