php mvc基本流程,php(mvc框架 erp流程系统)怎么写单元测试

我曾经也有这么个疑问,但是没有问出来,经历多了之后明白单元测试是咋回事之后,我来进行说一下。

首先,我们从程序上来说:

程序 = 数据结构 + 算法

然后,我们再从程序得功能上来说,程序都是以方法或者函数为最小逻辑单位,而不管方法还是函数再复杂,其实对于调用者来说,只包含两部分,也就是:

输入 -> 输出

所以,单元测试的核心思想就是:设定输入数据;

设定结果数据;

调用程序;

验证程序执行结果和设定的结果是否匹配。

也就是说,单元测试的核心思想就是手动检查输入的数据以编写的程序进行执行之后,所拿到的结果是否和真正的结果一致。

有了这个单元测试的核心思想,也就是正因为这个,也才使得单元测试可行;

如果你发现你的程序没法写单元测试,那说明你的程序设计肯定不合理。

那么,你问出这个问题的初始动机是什么呢?这里我也可以说道说道,从MVC这个思想来看,调用了程序之后,拿到的就是一个渲染好的页面,从道理来说,这就是输出结果。

但是,你不要以这种心态来看,如果你这么想的话,那么你的MVC设计应该来说是不合理的,V层,也就是view层,从道理上来说,只管渲染,而不处理逻辑的,如果处理逻辑了,说明你在上一层,估计是C层,这一层设计得不合理,导致view层还要处理逻辑,那么你肯定没法写单元测试。

M层,也就是model层,这一层,通常来说应该是数据库存储层,这一层应该来说只管增删改查,不做太多逻辑操作,实际逻辑应该是写在C层的,而写在C层,从代码执行层面上来看,似乎是必须要经过请求才能调用C层,所以针对C层不好写测试。

所以,针对MVC设计,你应该自己增加一个逻辑层,这个逻辑层尽量把业务逻辑拆分得更加细分,这样的话,单元测试针对细分的单元写验证就可以了,如果写的时候发现没法写单元测试,再做拆分,这样子的话,整套业务逻辑性,程序的逻辑性就很清晰,解耦也可以做得很好。

这就是一整套思想,希望你能看完。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值