小编Mr *_*ach的帖子

在phpunit中创建模拟而不模拟任何方法?

当我使用PHPUnit对我的PHP代码进行单元测试时,我试图找出模拟对象的正确方法,而不是模仿它的任何方法.

问题是,如果我不调用getMockBuilder()->setMethods(),那么对象上的所有方法都将被模拟,我无法调用我想要测试的方法; 但如果我打电话setMethods(),然后我需要告诉它嘲笑什么方法,但我不希望在所有的嘲笑任何方法.但我需要创建模拟,这样我就可以避免在测试中调用构造函数.

这是我想要测试的方法的一个简单示例:

class Foobar
{
    public function __construct()
    {
        // stuff happens here ...
    }

    public function myMethod($s)
    {
        // I want to test this
        return (strlen($s) > 3);
    }
}
Run Code Online (Sandbox Code Playgroud)

我可能测试myMethod():

$obj = new Foobar();
$this->assertTrue($obj->myMethod('abcd'));
Run Code Online (Sandbox Code Playgroud)

但这会叫Foobar的构造函数,这是我不想要的.所以相反,我会尝试:

$obj = $this->getMockBuilder('Foobar')->disableOriginalConstructor()->getMock();
$this->assertTrue($obj->myMethod('abcd'));
Run Code Online (Sandbox Code Playgroud)

但是getMockBuilder()不使用调用setMethods()将导致其所有方法被模拟并返回null,因此我的调用myMethod()将返回null而不触及我打算测试的代码.

到目前为止我的解决方法是:

$obj = $this->getMockBuilder('Foobar')->setMethods(array('none'))
    ->disableOriginalConstructor()->getMock();
$this->assertTrue($obj->myMethod('abcd'));
Run Code Online (Sandbox Code Playgroud)

这将模拟名为'none'的方法,该方法不存在,但PHPUnit并不关心.它会让myMethod()取消模拟,以便我可以调用它,它也会让我禁用构造函数,这样我就不会调用它.完善!除了必须指定一个不存在的方法名称 - "无",或"blargh"或"xyzzy"之外,似乎在作弊.

这样做的正确方法是什么?

phpunit mocking

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

Yii 2迁移测试数据库

我没有看到明确的方法来做到这一点,虽然我可以看到它在文档中被重复多次,具体来说:

使用yii migrate工具将测试数据库升级到最新版本;

发现于http://www.yiiframework.com/doc-2.0/guide-test-fixture.html#summary(仅举例)

会发生什么,无论我如何配置_console.php_config.php在我的tests/unit文件夹中,如果我运行迁移工具正在拿起主app db:

$ cd tests/unit
$ ../../yii migrate/up
Yii Migration Tool (based on Yii v2.0.0-dev)

No new migration found. Your system is up-to-date.
Run Code Online (Sandbox Code Playgroud)

是的,测试数据库已正确配置(运行测试将抛出错误,表示没有表).我显然可以自己创建数据库结构,但这都是为了让这个功能正常工作.

我目前正在使用通过composer安装的Basic应用程序.

php testing yii2 codeception

9
推荐指数
2
解决办法
8932
查看次数

使用div标签作为默认标签,而不是tinymce中的段落

我是joomla的新手,当前使用的是Joomla 3.6版。有没有一种方法可以将tinymce编辑器设置为使用div标签作为默认值而不是段落?任何答案将不胜感激,非常感谢。

html css php tinymce joomla3.0

6
推荐指数
1
解决办法
2267
查看次数

标签 统计

php ×2

codeception ×1

css ×1

html ×1

joomla3.0 ×1

mocking ×1

phpunit ×1

testing ×1

tinymce ×1

yii2 ×1