作者Nonegrame (肥宅)
看板Soft_Job
标题Re: [请益] 测试程式问题
时间Mon Jul 15 13:23:48 2019
※ 引述《VFCanisLupus (CanisLupus)》之铭言:
: 懂你的意思,假如说redis mongodb 那些并没有单元测试的模组或套件(我还没花时间找先
: 假设),那可以用docker的方式进行。
: 那这样是不是违反了单元测试的F.I.R.S.T 要点的 F与I ??
: 微服务用的是Spring Cloud,照上面前辈这样子做的话我做单元测试要用docker 架redis r
: abbitmq MySQL mongodb (可能服务发现也要启动起来), 这样每次测试应该是没办法2秒
: 内执行完了。
: 期间只要有任何一部分没成功启动或者连线失败都回造成测试失败。
: 後写测试T要点应该早就违反了,先不讨论
: --
我测试新手啦 写单元测试时 我通常不会 mock DB
在使用 ORM 的状况下 很容易会执行後与预期不符的状况
(例如 有绑 AfterFind Hook, 验 SQL 会是对的 但捞完的结果已经被改过 )
遇到其他外部功能还是会 mock 掉 但 DB 部分不会
确保真的连到 DB 时 ORM 出来结果与 test 状况相同
当然这样算是单元+整合测试的混合了
如果用的框架有提供相关功能会超级方便
像 php laravel 用 sqlite memory driver 实际跑起来也没多慢
至於只验证 SQL 语法是否为预期也试过 但是写起来太累了
最後还是直接开 DB 连比较乾脆
以上 提供参考
--
1F:嘘 hsiaoyoshye: 麻烦这系列的请到政黑或其他地方讨论好吗?这里是八04/27 00:40
2F:推 lrfnc: 仙04/27 00:51
3F:推 headiron: 乐04/27 00:52
4F:推 victorshu: 园04/27 00:57
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 61.222.19.170 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Soft_Job/M.1563168233.A.BDD.html
5F:推 crossdunk: hi肥宅 07/15 14:16
6F:→ Nonegrame: hi 推嘘自如 07/15 16:40
7F:推 banqhsia: 你可以验证 SQL 或 mock object 的行为,但是如果断言 07/15 20:06
8F:→ banqhsia: 查询结果的话,测试会跟资料绑在一起,程式码不稳定, 07/15 20:06
9F:→ banqhsia: 资料不见,测试案例会失败 07/15 20:06
10F:→ Nonegrame: 我是没遇过程式码不稳定资料不见 导致测试失败的情况拉 07/15 22:39