编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

每日来一发之伪单测(伪单是什么意思)

wxchong 2024-07-21 07:23:13 开源技术 9 ℃ 0 评论


推荐理由

首先声明, 这个库不是替代单元测试的, 也不是推荐你拒绝单元测试的, 所以标题使用了伪单测来形容. 单元测试是保证你的代码稳健性的, 无论是开源项目还是业务项目, 代码的健壮性是第一要素, 这也是你对自己, 对他人负责任的体现. 所以不要拒绝单元测试. 那为什么还会有这个推荐呢?

imanghafoori1/laravel-microscope

Find Bugs Before They Bite

我们在日常工作中, 经常会遇到工期短, 任务重的情况, 时间都进行在了开发中, 单元测试用例的编写来不及怎么办? 这就是推荐它的理由, 它可以对项目代码进行智能检测, 由库作者imanghafoori1[1] 自己的话来说就是:

It is created to be smarter than phpstorm and other IDEs in finding errors.

It is created to understand laravel run-time and magic.

It does not show you stupid false errors, all the errors are really errors.

If you have written a lot of tests for your app, you may not need this.

简单机翻一下 (流下了没有知识的眼泪...)

  • 比 PHPStorm 和其他 IDEs 的检测更加智能.
  • 阅读下库代码, 会对 Laravel 的运行时及魔术方法的应用有更深入的了解. (我说的)
  • 不谎报. 不错报.
  • 如果你已经编写了单元测试用例, 那么就不需要它了.

食谱

备料过程

# 这是一个用于开发的包, 所以注意加上 --dev 参数
composer require imanghafoori/laravel-microscope --dev

食用方法

 php artisan check:events
 php artisan check:gates
 php artisan check:views
 php artisan check:routes
 php artisan check:psr4
 php artisan check:imports
 php artisan check:all

食用详解

1.check:events

  Event::listen(MyEvent::class, '\App\Listeners\MyListener@myMethod');
  • 检查 MyEvent 的类路径是否正确.
  • 检查 MyEvent 的类路径是否正确.
  • 检查 MyListener 的类路径是否正确.
  • 检查 myMethod 方法是否定义.
  • 如果你在 myMethod 方法中定义了类型约束, 则会检查类型约束是否正确.

2.check:gates

 Gate::policy(User::class, 'UserPolicy@someMethod');
 Gate::define('someAbility', 'UserGate@someMethod');
  • 检查 Gate 是否有效, 确保该 Gate 引用的类和方法有效.
  • 检查 User 类的路径是否有效.
  • 检查 UserPolicy 类的路径是否有效.
  • 检查 someMethod 是否存在.

3.check:psr4

  • 根据 PSR-4 标准, 检查 composer.json 文件中配置的所有 psr-4 自动加载项, 并遍历所有类的命令空间是否正确.
  • 根据 PSR-4 标准, 自动更正命名空间.
  1. check:imports
  • 检查所有的命名空间引入是否正确
  • 可以理解 Laravel 别名, 所以 use Request 的方式不会被误报错.

5.check:routes

  • 检查路由引入的控制器和方法是否正确定义.
  • 检查所有控制器方法是否定义了正确的类型约束.
  • 检查路由对应的控制器方法中的 view 使用是否正确, 引用的模板文件是否正确.
  • 检查 blade 模板中的 @include() 和 @extends() 所引用的模板文件是否正确.

6.check:all

同时执行以上 5 条.

食用结果

因为我没有安装 Laravel Auth 包, 但是 welcome 模板中 route() 使用了Auth 包的方法.

食后感

虽然此库解决了我们开发中的一些问题, 但是与单元测试比起来, 还是有些差距, 业务性的测试第三方库是无法准确覆盖的, 所以在时间允许的情况下, 单元测试还是最重要的.

明天接着吃

致谢

  1. 本文排版使用开源工具 Markdown-Nice[2]
  2. 作者 mdnice[3]

参考资料

[1] imanghafoori1: https://github.com/imanghafoori1

[2] Markdown-Nice: https://github.com/mdnice/markdown-nice

[3] mdnice: https://github.com/mdnice

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表