PHP 测试框架 Shmock

码农软件 · 软件分类 · 单元测试工具 · 2019-11-18 16:43:48

软件介绍

Shmock(SHorthand for MOCKing)是 PHPUnit 创建 mocks 的平稳替代,使用 EasyMock 的 mock/replay 概念,但是又使用 mocking 定义的闭包范围。

示例代码:

<?php
    namespace Foo;

    /**     * Here's a class we're trying to test yay.     */
    class Foo
    {
        private $foo = 0;
        private $incrementing_service = null;

        public function __construct(Incrementing_Service $incrementing_service)
        {
            $this->incrementing_service = $incrementing_service;
        }

        public function next_foo()
        {
            $this->foo = $this->incrementing_service->increment($this->foo);
            return $this->foo;
        }
    }

    /**     * Our test case runs the same test case twice - once with the original PHPUnit mocking     * syntax and a second time with Shmock syntax.     */
    class Foo_Test extends PHPUnit_Framework_TestCase
    {
                use \Shmock\Shmockers; // This enables the use of the Shmock helper methods (replicated below)

                public function test_phpunit_original_mocking_syntax()
        {
            // this is the original PHPUnit mock syntax

            $incrementing_service_mock = $this->getMock('\Foo\Incrementing_Service', array('increment'));
            $incrementing_service_mock->expects($this->once())
                ->method('increment')
                ->with($this->equalTo(0))
                ->will($this->returnValue(1));

            $foo = new Foo($incrementing_service_mock);
            $this->assertEquals(1, $foo->next_foo(0));
        }

        /**         * Create a shmock representation for $class_name and configure expected         * mock interaction with $conf_closure         * @return Shmock A fully configured mock object         * @note You do not need this protected method if you use the Shmockers trait, shown above         */
        protected function shmock($class_name, $conf_closure)
        {
            return \Shmock\Shmock::create_class($this, $class_name, $conf_closure);
        }

        public function test_shmock_syntax()
        {
            // here's shmock. Neat huh?
            $incrementing_service_mock = $this->shmock('\Foo\Incrementing_Service', function($shmock)
            {
                $shmock->increment(0)->return_value(1);
            });

            $foo = new Foo($incrementing_service_mock);
            $this->assertEquals(1, $foo->next_foo(0));
        }
    }


本文地址:https://codercto.com/soft/d/19271.html

Windows黑客编程技术详解

Windows黑客编程技术详解

甘迪文 / 人民邮电出版社 / 2018-12 / 108

《Windows黑客编程技术详解》介绍的是黑客编程的基础技术,涉及用户层下的Windows编程和内核层下的Rootkit编程。本书分为用户篇和内核篇两部分,用户篇包括11章,配套49个示例程序源码;内核篇包括7章,配套28个示例程序源码。本书介绍的每个技术都有详细的实现原理,以及对应的示例代码(配套代码均支持32位和64位Windows 7、Windows 8.1及Windows 10系统),旨在......一起来看看 《Windows黑客编程技术详解》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

html转js在线工具
html转js在线工具

html转js在线工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具