在php中存根方法

网络

我有一个问题,我不知道怎么说,当x被调用时,它期望y至少被调用一次,并且我不在乎y做什么,只要被调用即可。

因此,如果我们看这个例子:

public static function createAction($params) {
    $postParams = $params->request()->post();

    // Controller logic here ...

    $params->redirect('/signin');
  }

在下面的测试中,我想做的就是说-我希望redirect()参数'/singin'被称为1次。

我的测试看起来像:

<?php

use \GP\Models\User;
use Slim\Environment;
use \GP\Controllers\UserController;

class UserControllerTest extends PHPUnit_Framework_TestCase {

    protected $em;

    protected $app;

    public function setUp() {
        $this->em = getEntityManager(true);
        $tool = new \Doctrine\ORM\Tools\SchemaTool($this->em);

        $mdFactory = $this->em->getMetadataFactory();
        $tool->dropSchema($mdFactory->getallMetadata());
        $tool->createSchema($mdFactory->getallMetadata());
        parent::setUp();

        $_SESSION = array();
        $this->app = new \Slim\Slim(array('mode' => 'testing'));
    }

    public function tearDown() {
        $tool = new \Doctrine\ORM\Tools\SchemaTool($this->em);

        $mdFactory = $this->em->getMetadataFactory();
        $tool->dropSchema($mdFactory->getallMetadata());
        parent::tearDown();
    }

    public function testUserCreate() {
        Environment::mock(array(
            'REQUEST_METHOD' => 'POST',
            'slim.input'     => 'firstname=user&lastname=somethingelse&username=admin&[email protected]&password=1234567890&repassword=1234567890'
        ));

        UserController::createAction($this->app);

        $user = $this->em->getRepository('\GP\Models\User')
                     ->findBy(array('user_name' => 'admin'));

        $this->assertNotEmpty($user);
    }
}

当它运行时,我得到:

$ phpunit
PHPUnit 4.6.6 by Sebastian Bergmann and contributors.

Configuration read from /var/www/html/Grab-Project/phpunit.xml

....E

Time: 13.45 seconds, Memory: 21.25Mb

There was 1 error:

1) UserControllerTest::testUserCreate
Slim\Exception\Stop: 

/var/www/html/Grab-Project/vendor/slim/slim/Slim/Slim.php:1022
/var/www/html/Grab-Project/vendor/slim/slim/Slim/Slim.php:1042
/var/www/html/Grab-Project/vendor/slim/slim/Slim/Slim.php:1105
/var/www/html/Grab-Project/app/Controllers/UserController.php:73
/var/www/html/Grab-Project/tests/app/controllers/UserControllerTest.php:40

FAILURES!
Tests: 5, Assertions: 8, Errors: 1.

当它尝试调用重定向时,会发生此问题。这是因为我没有在测试中指定苗条应该重定向的位置,相反,我想对该方法进行存根并说,我希望在数据库中找到该用户,就像我一样,并且我希望此带有此参数的方法被调用一次。

我如何在Rails中执行此操作,但阅读文档会使我感到困惑...

梅尔文

如果$ params-> redirect('/ signin'); 是断线,我认为您应该可以解决此问题。

在设置中:

$this->app = $this->getMock(
  '\Slim\Slim', 
  array('redirect'), 
  array(array('mode' => 'testing'))
);

array(array(是故意的,因为它是构造函数参数的数组,而您的构造函数看起来像它想要一个数组作为第一个参数。

然后,您可以将其添加到您的测试功能中。

$this->app->expects($this->once())->method('redirect');

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在MSpec中存根静态方法

来自分类Dev

如何在ActiveSupport :: TestCase中存根方法

来自分类Dev

在android的uiautomator.jar中存根的方法

来自分类Dev

如何在Kiwi中存根方法块?

来自分类Dev

控制器中的存根超级方法

来自分类Dev

在sinon存根中替换多种方法

来自分类Dev

如何在Kiwi中存根方法块?

来自分类Dev

rspec在已经存在的imp中存根方法

来自分类Dev

如何在rspec模型中存根方法

来自分类Dev

sinon 存根在 then 调用 promise 中执行的方法

来自分类Dev

如何存根初始化方法中调用的方法

来自分类Dev

存根中的any_number_of_times方法的替代方法

来自分类Dev

如何存根初始化方法中调用的方法

来自分类Dev

如何在ruby中存根method_missing定义的方法?

来自分类Dev

测试RSpec中某个输入是否调用了存根方法

来自分类Dev

存根中的any_number_of_times方法的替代

来自分类Dev

在wordpress项目中的phpunit中存根方法调用

来自分类Dev

Rspec如何对在方法中创建的对象进行存根

来自分类Dev

如何在域或后续方法中存根请求?

来自分类Dev

RSpec:请求规范中的存根控制器方法

来自分类Dev

在Rhino Mocks中,如何使用null参数存根方法?

来自分类Dev

Rails / RSpec中的存根专用控制器方法

来自分类Dev

sinon中具有异步回调的存根方法

来自分类Dev

测试RSpec中某个输入是否调用了存根方法

来自分类Dev

如何在Rails Controller中存根self方法

来自分类Dev

使用RSpec在控制器中存根特定方法

来自分类Dev

如何在猫鼬模型中存根方法?

来自分类Dev

在使用chai和sinon的方法中存根诺言

来自分类Dev

如何在MiniTest中对带有参数的方法进行存根

Related 相关文章

热门标签

归档