codecamp

Prophecy

Prophecy

Prophecy 是个“极为自我却又非常强大且灵活的 PHP 对象模仿框架。虽然一开始是为了满足 phpspec2 的需要而建立的,但它足够灵活,可以用最小代价用于任何测试框架内。”

从版本 4.5 开始,PHPUnit 为用 Prophecy 建立测试替身提供了内建支持。Example 9.17, “测试某个方法会以特定参数被调用一次”展示了Example 9.11, “测试某个方法会以特定参数被调用一次”中展示的测试应该如何用 Prophecy 的的预言式理念方式来达到同样的效果:

Example 9.17. 测试某个方法会以特定参数被调用一次

<?php
class SubjectTest extends PHPUnit_Framework_TestCase
{
    public function testObserversAreUpdated()
    {
        $subject = new Subject('My subject');

        // 为 Observer 类建立预言(prophecy)。
        $observer = $this->prophesize('Observer');

        // 建立预期状况:update() 方法将会被调用一次,
        // 并且将以字符串 'something' 为参数。
        $observer->update('something')->shouldBeCalled();

        // 揭示预言,并将仿件对象链接到主体上。
        $subject->attach($observer->reveal());

        // 在 $subject 对象上调用 doSomething() 方法,
        // 预期将以字符串 'something' 为参数调用 
        // Observer 仿件对象的 update() 方法。
        $subject->doSomething();
    }
}
?>

更多关于如何用这个测试替身框架来创建、配置及使用桩件、谍件、仿件的细节,请参考 Prophecy 的 文档

仿件对象(Mock Object)
对特质(Trait)与抽象类进行模仿
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

3. 命令行测试执行器

7. 未完成的测试与跳过的测试

12. 测试的其他用途

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }