上回长毛象测试环境搭建,有很多东西没有补充,就比如,进行测试什么的。
官方文档似乎已经说得很清楚了,测试的方法就是这样

Useful commands for testing
rspec
Run the Ruby test suite
yarn run test
Run the JavaScript test suite
rubocop
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小时,所以也不建议浪费时间了。

测试踩坑

  1. 生产环境少装了很多测试用的依赖,所以你直接rspec必定会报错。首先,你要检查你的长毛象目录内是否有.bundle文件,如果有,里面可能包含了bundle config留下的文件。根据官方文档配置,就会跳过测试环境依赖包的安装。把它删掉,再运行bundle install,你就会发现多装了很多东西。然后yarn install也不能少。
  2. 测试需要用到海量数据,没有安装测试环境数据库的话,还是无法正确运行rspec。你必须按照官方文档指导,运行RAILS_ENV=development rails db:setup
  3. 做到这一步,你还是无法正确测试,因为你的assets没编译完整。在这最新版长毛象,你必须运行RAILS_ENV=development vite build,它就会给你预编译测试环境的实例。
  4. 测试环境的依赖、资产和数据库全部齐全的条件下,再运行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改,我们注定不能合并。