修改 phpunit.xml 配置文件: phpunit 不再按照測(cè)試方法的定義順序執(zhí)行,可以避免測(cè)試程序和執(zhí)行順序發(fā)生耦合。為了便于復(fù)現(xiàn)錯(cuò)誤距贷,phpunit 運(yùn)行時(shí)會(huì)顯示 ...
修改 phpunit.xml 配置文件: phpunit 不再按照測(cè)試方法的定義順序執(zhí)行,可以避免測(cè)試程序和執(zhí)行順序發(fā)生耦合。為了便于復(fù)現(xiàn)錯(cuò)誤距贷,phpunit 運(yùn)行時(shí)會(huì)顯示 ...
Infection測(cè)試工具是開(kāi)源的谒麦,這里的免費(fèi)不是指費(fèi)用混滔,而是不需要額外付出努力烹笔,增加測(cè)試效果伙窃。 Infection 通過(guò) mutants 變異因子修改被測(cè)代碼饿这,運(yùn)行測(cè)試程序...
Wekan 是開(kāi)源的看板軟件浊伙,實(shí)現(xiàn)了很多 Trello 的功能。下面說(shuō)說(shuō)如何用 docker 啟動(dòng)和使用 Wekan Clone Repository https://git...
PHP anonymous function 會(huì)被創(chuàng)建為 Closure 對(duì)象實(shí)例长捧,默認(rèn)情況下吧黄,會(huì)把所在對(duì)象的 $this 保持在 Closure 對(duì)象實(shí)例中。如果$this...
先看一個(gè)例子:testPush 和 testPop 都依賴 testEmpty唆姐。 那么拗慨,testEmpty 會(huì)執(zhí)行幾次呢?答案是1次奉芦。這意味著對(duì)象的狀態(tài)在三個(gè)測(cè)試中共享赵抢,如果...
Mockery 有三種 partial mock: runtime, generated and proxy。Generated 在 runtime 之前實(shí)現(xiàn)的声功,通過(guò)生成代碼...
日期有關(guān)的代碼是比較難測(cè)試的烦却,超時(shí)30分鐘,不能真的等30分鐘先巴。在 php 生態(tài)中其爵,個(gè)人覺(jué)得 ClockMock 是最好用的, Mock的日期功能最全面伸蚯, 直接替換系統(tǒng)接口摩渺,...
Voter 有很強(qiáng)的靈活性: 通過(guò)實(shí)現(xiàn) vote() 方法,結(jié)合 DI 幾乎可以實(shí)現(xiàn)任意想要的判斷條件剂邮,但是有一個(gè)巨大的開(kāi)銷: NOTE: 在結(jié)果沒(méi)有確定之前摇幻,所有的 V...
膠囊就是簡(jiǎn)化的意式咖啡吧
美式機(jī)闭树、虹吸壺牵舵、法壓壺、手沖官紫、意式機(jī)引瀑、摩卡壺……究竟哪個(gè)更好狂芋?常有人會(huì)提問(wèn): 不同的沖泡方式是否需要配合不同的咖啡豆?同一種咖啡豆用美式機(jī)和用虹吸壺沖出來(lái)味道有什么不同憨栽?自己在家泡咖啡帜矾,用哪種器具最好辆影? 為了回答這些問(wèn)題,查老師已經(jīng)著手...
對(duì)象結(jié)構(gòu)黍特,自動(dòng)化metadata掃描蛙讥,自動(dòng)化api和界面生成,一起都很美好灭衷。經(jīng)過(guò)一番研究后個(gè)人覺(jué)得不適合企業(yè)應(yīng)用開(kāi)發(fā)次慢。 簡(jiǎn)化前端開(kāi)發(fā)流程,同時(shí)控制開(kāi)發(fā)成本翔曲,提高靈活性迫像,連接多...
Pest extend from phpunit, simpler to write, brought some modern feature, but not modern...
目標(biāo):基于dvorak布局,修改: number行數(shù)字和符號(hào)互換 關(guān)掉 caps lock瞳遍,變成esc 左右兩邊shift 同時(shí)按闻妓,切換 shift-lock 狀態(tài) 參考:h...
PHP tmpfile() very handy to use, auto delete after request complete or fclose(). But ma...
PhpStorm 找不到文件和類 File | Invalidate Caches / Restart | Invalidate and Restart 清空文件緩存
Update array like property Two method: use setter method to replace the whole array obj...