上回长毛象测试环境搭建,有很多东西没有补充,就比如,进行测试什么的。
官方文档似乎已经说得很清楚了,测试的方法就是这样
Useful commands for testing
rspec
Run the Ruby test suiteyarn run test
Run the JavaScript test suiterubocop
Check the Ruby code for conformance with our code style
实际上运行起来,基本上都是报错。我自己上网搜了一下,发现也没有测试长毛象代码的中文教程。发现的只有这个https://dev.to/appmap/the-fastest-way-to-run-mastodon-tests-5g03 ,这应该是最好的非官方教程了,比官方文档解释得还清楚
我已经测试过代码了,测试方法不对的话,官方代码也一堆问题,测试方法对了,那官方现版本的代码完全满分!
我觉得测试代码的意义不大,毕竟只要搭建长毛象测试环境,就可以验证你代码对不对了。每天活跃用户100人以下的实例,不会有什么黑客来注入代码,或者疯狂试探bug的有的只是毫无技术含量可言的DDOS以及社工攻击。
我认为这个意义就在于,写出一段可以让官方接受PR的代码,养成开发的良好习惯。虽然官方从来没接受过我的PR
换一个角度,要想尽快理解长毛象代码,你首先得会从头,随时随地部署长毛象(测试和生产)。
要想官方接受你的代码,你首先得会写测试用例。
要想要想写出合格的测试用例,你首先得学会测试。
rspec
网上我搜了rspec,相信有心的读者也跟我一样,结果搜出来的都是培训班式的教程。看一遍可以,看多了你还想 “温故而知新” 也是纯纯文科生思维,跟你说不下去。
我看了我上面提到的那篇文章,它解释了旧版本,即未使用vite的v4.3及更早的版本。
假如你想测小森林,那么这篇文章就很有参考意义了。你就得照他说的改config/webpacker.yml,然后把环境变量设为RAILS_ENV=test再运行rspec。否则,它会提示缺少依赖。
如果你想测最新官方实例,或者像我这种(不用测了,肯定不合格)和glitch分支,那我就从头开始解说。
搭建测试环境
还是回到我上次写的那篇搭建环境的文章,那里用了vagrant和虚拟机手动安装,这两种方法。其实搭建测试环境并不局限于虚拟机和vagrant,我两者都不是,而是用我的闲置旧VPS测的。我直接生产环境,前面加上RAILS_ENV=development,当作测试环境进行测试。毕竟旧机器上什么软件都有,从头再装浪费时间。而且测试开发数据库mastodon_development和生产用的mastodon_production是分开的。如果你没有备用机和现成的vagrant虚拟机,那还是请参照我上次写的那篇搭建环境的文章搭建完实例再说。
如果用vagrant的话,请修改Vagrantfile,调整vbox虚拟机配置,多安排些CPU核数跟虚拟机内存,否则测试将会多花几十倍的时间。全套代码测试一次要30分钟到1小时,所以也不建议浪费时间了。
测试踩坑
- 生产环境少装了很多测试用的依赖,所以你直接
rspec必定会报错。首先,你要检查你的长毛象目录内是否有.bundle文件,如果有,里面可能包含了bundle config留下的文件。根据官方文档配置,就会跳过测试环境依赖包的安装。把它删掉,再运行bundle install,你就会发现多装了很多东西。然后yarn install也不能少。 - 测试需要用到海量数据,没有安装测试环境数据库的话,还是无法正确运行
rspec。你必须按照官方文档指导,运行RAILS_ENV=development rails db:setup。 - 做到这一步,你还是无法正确测试,因为你的assets没编译完整。在这最新版长毛象,你必须运行
RAILS_ENV=development vite build,它就会给你预编译测试环境的实例。 - 在测试环境的依赖、资产和数据库全部齐全的条件下,再运行
RAILS_ENV=test rspec,才能将长毛象最新版(v4.4~v4.5限定)的官方代码测出满分佳绩。你只有提前把RAILS_ENV=test加入环境变量,才可能运行出跟官方文档一致的效果。
yarn run test
顺利运行完上一节的rspec,再在官方代码运行yarn run test还是报错对不对?按理来说v4.4分支也应该是满分才对。
仔细看输出信息,就会发现,其实它测的都是预编译好的javascript代码。
你要进入public文件夹,找到pack开头的那些个文件。这些都是部署和测试过程中安装的前端代码,把这些目录全部删掉,再进行测试
1 | yarn run test |
就会得到较完美的结果。
rubocop
这是测试代码风格的命令。这里没有什么坑,还会自动更正代码风格,让你的代码更美观,更优雅。
风格的规定全写在了.rubocop目录里,如果你要创立自己的分支项目,你可以在这里修改,并在你的文档里对代码贡献者作出规定。rubocop一般也是只测个别文件。测试全体文件的话,你需要验证你操作是否正确时,用
1 | rubocop |
测测官方原始代码就行了,如果官方代码也不整洁,那你也不用跟他们讲究了。
我测了小森林,他的main代码也不讲究,所以我自己魔改也不讲究了。
当然,由于我是4.4改,他是3.5改,我们注定不能合并。