小编Tom*_*m B的帖子

TDD - 无法模拟的依赖关系

假设我有一节课:

class XMLSerializer {
    public function serialize($object) {
        $document = new DomDocument();
        $root = $document->createElement('object');
        $document->appendChild($root);

        foreach ($object as $key => $value) {
            $root->appendChild($document->createElement($key, $value);
        }

        return $document->saveXML();
    }

    public function unserialze($xml) {
        $document = new DomDocument();
        $document->loadXML($xml);

        $root = $document->getElementsByTagName('root')->item(0);

        $object = new stdclass;
        for ($i = 0; $i < $root->childNodes->length; $i++) {
            $element = $root->childNodes->item($i);
            $tagName = $element->tagName;
            $object->$tagName = $element->nodeValue();
        }

        return $object;
    }

}
Run Code Online (Sandbox Code Playgroud)

我该如何单独测试?在测试这个类时,我也在测试DomDocument类

我可以传入文档对象:

class XMLSerializer {
    private $document;

    public function __construct(\DomDocument $document) { …
Run Code Online (Sandbox Code Playgroud)

php testing tdd phpunit unit-testing

13
推荐指数
1
解决办法
389
查看次数

得墨忒耳定律 - 数据对象

我试图按照法律的德米特(见http://en.wikipedia.org/wiki/Law_of_Demeter,http://misko.hevery.com/code-reviewers-guide/flaw-digging-into-collaborators/)因为我可以看到它的好处,但是当涉及到域对象时,我变得有点卡住了.

域对象自然有链,有时需要显示有关整个链的信息.

例如,一个购物篮:

每个订单包含用户,交货信息和项目清单每个订单项目包含产品和数量每个产品都有名称和价格.每个用户都包含一个名称和地址

显示订单信息的代码必须使用有关订单,用户和产品的所有信息.

当然,通过订单对象获取此信息更好,更可重用,例如"order.user.address.city",而不是上面列出的所有对象的某些代码,然后将它们分别传递给代码?

欢迎提出任何意见/建议/提示!

theory oop law-of-demeter

10
推荐指数
1
解决办法
1974
查看次数

Linux跟踪进程访问的所有文件?

有没有办法跟踪给定进程的所有文件I/O?我真正需要的是从给定进程读取/写入的文件的位置(理想情况下,如果它是读取或写入操作,尽管这并不重要).

我可以运行该流程并跟踪它,而不是需要附加到现有流程,我认为这个流程要简单得多.是否有任何类型的包装实用程序我可以运行一个进程虽然会监视文件访问?

linux trace file

6
推荐指数
2
解决办法
9819
查看次数

Chrome扩展程序sendMessage

此处的文档似乎很糟糕:http://code.google.com/chrome/extensions/messaging.html

我想要我的内容脚本,只需要在页面上有textarea时显示pageIcon.

我的content.js(使用jquery)执行此操作:

$('textarea').each(function() {
    chrome.extension.sendMessage({greeting: "hello"}, function(response) {
       console.log(response);
    });
});
Run Code Online (Sandbox Code Playgroud)

然后我的background.js有这个:

chrome.extension.onMessage.addListener(

    function(request, sender, sendResponse) {
        chrome.pageAction.show(sender.tab.id);
    } 
});
Run Code Online (Sandbox Code Playgroud)

哪个应该非常简单.如果有textarea,请显示图标.

我已尝试过示例代码中的各种变体,但没有任何作用.我得到的只是:

端口错误:无法建立连接.接收端不存在.

在控制台中.

我出错的任何想法?

javascript google-chrome sendmessage google-chrome-extension

2
推荐指数
1
解决办法
1万
查看次数