V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  feiyuanqiu  ›  全部回复第 21 页 / 共 41 页
回复总数  815
1 ... 17  18  19  20  21  22  23  24  25  26 ... 41  
2016-06-24 09:39:23 +08:00
回复了 lml12377 创建的主题 程序员 PHP 如何引入第三方类库
spl 的 autoloader 不会被覆盖的,上一个 loader 找不到文件会继续调下一个注册的 loader 去找
你看看调用 phpmailer 的时候有没有加上 root namespace ,比如这样
$mailer = new \PHPMailer()
2016-06-09 22:52:48 +08:00
回复了 corboy 创建的主题 程序员 如何写单元测试
没写完,按错回复了...那就不多说了
大致的流程就是:
1 、准备测试数据集,测试数据集会填充到测试数据库里
2 、 setUp 方法会在执行每个测试用例前执行,在这里会将测试数据库的连接替换掉模块正常的数据库连接,保证每次执行测试案例的时候测试数据都是一致的,不影响其他环境的
3 、执行测试方法,因为待测试方法的数据库连接已经被我们的测试数据库连接劫持了,所以这个方法里面操作的所有数据库数据都是测试数据库中的数据
4 、执行 tearDown 方法

一般的单元测试看看官方文档就行了

另外,可以看看 google 测试工程师的这个文档 Guide: Writing Testable Code http://misko.hevery.com/code-reviewers-guide/

单元测试对代码质量还是很有帮助的,而且写了几天之后就会对依赖注入非常痴迷...
2016-06-09 22:45:21 +08:00
回复了 corboy 创建的主题 程序员 如何写单元测试
@nonesuccess 一般来说,如果待测试的代码使用到了第三方的 api ,应该尽可能地避免在代码里直接依赖,尽量使用依赖注入,然后测试的时候注入一个 mock 的依赖对象,就可以很简单地进行测试了,比如有这样的代码:
class Sample {
function sampleMethod() {
$client = new ThirdpartyClient();
$client->doSomething();
...
}
}
这种代码就非常难以测试,因为你的测试结果会依赖于这个真实的 ThirdpartyClient ,而它的行为是不可控制的,这个时候最好重构一下代码,将 ThirdpartyClient 作为方法的参数(更好的方式是作为这个类的构造方法的参数,然后用依赖注入容器去处理依赖的注入):
class Sample {
function sampleMethod(ThirdpartyClient $client) {
$client->doSomething();
...
}
}
这样,在写测试的时候,就可以注入一个模拟 ThirdpartyClient 行为的 Mock 对象( PHPUnit 的 getMockBuilder 方法可以很方便地进行这个工作),来进行测试工作。
你需要记住的就是单元测试的对象是当前这个代码单元的逻辑, ThirdpartyClient 的行为不在这个测试的范畴内,你只需要假设它始终会按照它的接口说明进行返回就可以了

对于数据库测试,我目前采用的方式是 PHPUnit 的 PHPUnit_Extensions_Database_TestCase 工具来做的
构造一个 fake DAO (这个 DAO 连接的是我的测试数据库),每个模块的测试会单独提供测试数据集, PHPUnit 在执行每个测试用例前,会调用 setUp 方法,这个方法会将测试数据集初始化到测试数据库,然后将这个测试 Dao 注入到待测试的模块,这个模块之后的所有数据库操作,都会通过这个测试 Dao 来执行,就保证了每次执行测试,数据的一致。
这里也有个简单的例子:
class OrderServiceTest extends GenericDatabaseTestCase
{
/**
* 订单模块实例
*
* @var OrderService
*/
protected $service;

/**
* 初始化测试数据集
*
* @return \PHPUnit_Extensions_Database_DataSet_CompositeDataSet
* @throws \Exception
*/
public function getDataSet()
{
return $this->loadTestDataset(
[
'Order/orders',
'Order/order_items',
]
);
}

/**
* 初始化基境
*
* @return void
* @throws \Exception
*/
public function setUp()
{
parent::setUp();

$this->service->setDao($this->getMockDao());
}
2016-06-09 10:15:50 +08:00
回复了 misaka19000 创建的主题 操作系统 你们是怎么看完 CSAPP 的?
不用强求一遍就看懂,可以先概略地翻一遍,对整体有个概念。
这本书其实是本 c 语言书,没有 c 基础的话,可以先找本 c 的书看看,然后跟这本书对照着学习,比如对数据溢出或类型转换带来的精度损失理解不清楚的话,就可以结合 csapp 第二章一起看,对一些代码的奇怪的运行结果感到迷惑的时候,可以解析到汇编,尝试用第三章的知识看懂汇编代码来理解程序的行为...差不多就是这样,算是我自己的一点学习经验吧
2016-06-08 10:05:52 +08:00
回复了 billion 创建的主题 Node.js Node.js 学习材料求推荐
2016-06-03 13:36:33 +08:00
回复了 ivmm 创建的主题 问与答 iplaysoft,已经彻底沦落了,这里有证据。
... @X-Force
2016-06-02 09:29:22 +08:00
回复了 1012808318 创建的主题 问与答 没有任何后端编程基础要学 php 还是 node 还是 python?
@crabRunning 吃了一斤伟哥...哈哈哈
2016-06-01 00:02:11 +08:00
回复了 sudo987 创建的主题 机械键盘 入坑 hhkb,忐忑中
@sudo987 从我的情况来说,太大了,不好放。配合外接键盘,排除键盘手感的因素,感觉不如笔记本键盘触摸板用起来顺畅…个人体验哈,各位轻喷
2016-05-31 23:48:06 +08:00
回复了 sudo987 创建的主题 机械键盘 入坑 hhkb,忐忑中
先别急着买触摸板,键盘到了试试手感看喜不喜欢再做下一步,我跟你差不多,没买 hhkb 前憋得慌,半夜忍不了了下单买,第二天又买了 trackpad2 ,等键盘从日本运过来用了两三天这一套就扔抽屉吃灰了…
2016-05-31 23:32:08 +08:00
回复了 sudo987 创建的主题 机械键盘 入坑 hhkb,忐忑中
不一定...
2016-05-30 10:03:32 +08:00
回复了 xtynk 创建的主题 分享发现 王垠:我的 tweet 系统
挺能理解的,网上的评论其实大多数都没什么价值,尤其是对于他来说,看他的微博,有水平的回复基本没有,一堆的冷嘲热讽,真不如关了清静一点
「你们想看就看,不想看就算了」他很早之前就禁止转载他的文章了,要看必须主动到他的博客看, 看完了不爽要喷那就不关他的事了,是自己犯贱。然而一堆好事者每每在他发了博客之后就跑到知乎提个问,或者转载到论坛里让大家批判一番,只能说多大仇
2016-05-19 18:40:00 +08:00
回复了 ss098 创建的主题 求职 请各位前辈估计一下我的水平能拿到怎样的薪资 PHP / Python Web
看了你的 github 里面第一个 repo ,英语还不是很好的时候或许可以用中文代替,应该比有语法错误的英语看起来好一些

$message_list = array(
0 => 'Order is exists', // 订单存在
1 => 'Order is not exists', // 订单不存在
2 => 'Order is exists, but is used for other appid', // 订单存在并且被用于其他 appid
3 => 'Order is exists, but is used for this appid', // 订单存在并且被当前 appid 使用
4 => 'Order did not use', // 订单没有被使用
5 => 'Order used with this request', // 成功使用订单给这个应用
);


这个地方或许也可以修改一下
http://ww4.sinaimg.cn/large/6856d0b6gw1f40vrvhlfpj21fu11wjwd.jpg


另外从你的代码里面也不太容易看出来遵循了哪些 psr 规范
2016-05-17 00:16:01 +08:00
回复了 tianshilei1992 创建的主题 macOS Xcode 7 Beta 6 字体设置问题
我也遇到这个问题了,快一年了这 bug 都还没解决真是服了

试了一下楼上的方法:
#5 现在开着的窗口有点多,不想重启,所以修改系统语言的方法还没试
#20 楼上的方法没效果

自己试了一下,找到一个不用修改系统语言的方法:
选中 family 随便一个字体,随便键入一个字母,所有字体就都出来了(比如输入 consolas, 就会快速定位到 consolas 字体,同时所有字体也都可选了)

http://ww3.sinaimg.cn/large/6856d0b6gw1f3xom9ajmuj20xa0ewwgc.jpg
2016-05-14 22:38:51 +08:00
回复了 GhostEX 创建的主题 问与答 求推荐一款好看的、有逼格的 PhpStorm 主题
系统自带的 darcula 就很好了,不过一个主题用久了也会厌倦,所以最近换了 github 的主题,感觉也还好
http://ww2.sinaimg.cn/large/6856d0b6gw1f3vaihjsl8j21kw14uaj0.jpg
1 ... 17  18  19  20  21  22  23  24  25  26 ... 41  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5854 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 40ms · UTC 03:09 · PVG 11:09 · LAX 19:09 · JFK 22:09
Developed with CodeLauncher
♥ Do have faith in what you're doing.