小编Ian*_*ips的帖子

在依赖的PHPUnit测试之间传递的对象会发生什么?

这不是一个问题,而是试图在PHPUnit上浪费我的其他时间.

我的问题是我的模拟对象,当在依赖测试中使用时,没有返回预期值.看来,PHPUnit的不保留相关测试之间的同一个对象,即使语法使它看起来像它.

有谁知道为什么PHPUnit这样做?这是一个错误吗?PHPUnit中的这类内容使得使用起来非常令人沮丧.

<?php 
class PhpUnitTest
extends PHPUnit_Framework_TestCase
{
private $mock;

public function setUp()
{
    $this->mock = $this->getMock('stdClass', array('getFoo'));

    $this->mock->expects( $this->any() )
        ->method('getFoo')
        ->will( $this->returnValue( 'foo' ) );
}

public function testMockReturnValueTwice()
{
    $this->assertEquals('foo', $this->mock->getFoo());
    $this->assertEquals('foo', $this->mock->getFoo());

    return $this->mock;
}

/**
 * @depends testMockReturnValueTwice
 */
public function testMockReturnValueInDependentTest($mock)
{
    /* I would expect this next line to work, but it doesn't! */
    //$this->assertEquals('foo', $mock->getFoo());

    /* Instead, the $mock parameter is not the same object as
     * generated by …
Run Code Online (Sandbox Code Playgroud)

php phpunit mocking depends

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

OR关系中的多个Guard身份验证器

我正在使用Symfony 2.8的新Guard身份验证系统,我想允许用户使用两种方法之一进行身份验证.所以我已经为两者实现了Guard身份验证器,并像这样配置它们:

security:
  firewalls:
    my_firewall:
      pattern: ^/some-pattern
      guard:
        authenticators:
          - my_first_auth
          - my_second_auth
        entry_point: my_first_auth
Run Code Online (Sandbox Code Playgroud)

问题是它们运行,所以如果用户在第一次成功但在第二次成功时失败,他会得到一个禁止的响应.在这种情况下,我希望他成功.

有没有办法在OR关系中配置多个Guard身份验证器,这样如果第一个成功,第二个会被跳过?

authentication symfony

4
推荐指数
1
解决办法
1724
查看次数

为什么PHPUnit会隐藏我的xdebug回溯?

我安装了PHPUnit和xdebug,在CLI的php.ini文件中我得到了:

display_errors = On
xdebug.default_enable = 1
Run Code Online (Sandbox Code Playgroud)

我已经验证了当我使用交互式控制台创建错误时会打印xdebug回溯,但是当运行phpunit时发生错误时,没有回溯?

回溯发生了什么?phpunit是否将它隐藏起来?有什么设置我不见了?

谢谢!

php phpunit xdebug backtrace

3
推荐指数
1
解决办法
3425
查看次数

如何在Symfony2之外启用ORM注释前缀?

我正在将一个旧的PHP项目转换为Symfony2框架.有些页面现在由我的Symfony2前端控制器(index.php)处理,但许多页面尚未转换.

问题是,在Symfony中,我的所有Doctrine实体注释都必须以ORM \前缀开头,但在Symfony之外,该前缀似乎没有启用,因此我收到以下错误:

Class MyProject\MyBundle\Entity\MyClass is not a valid entity or mapped super class.

我试图复制Symfony所做的任何设置,包括遵循这些说明 [doctrine-project.org],并实际上将app/autoload.php完全包含在我的遗留引导过程中.但没有任何作用.

有谁知道如何手动复制Symfony为我的Doctrine注释启用ORM \前缀的任何内容?

php doctrine annotations symfony

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

使用Assert注释的Symfony2验证不起作用

更新:由于我没有得到任何答案,我使用一个更简单的例子重写了整篇文章.希望这有助于揭露问题.

我在表单验证方面遇到了麻烦.我可以使NotBlank()断言起作用,但Type()对我不起作用.首先,这是代码:

/* ...\Entity\LineItem.php */
<?php

namespace Rialto\ExperimentBundle\Entity;

use Symfony\Component\Validator\Constraints as Assert;

class LineItem
{
    /**
     * @var integer
     * @Assert\NotBlank()
     * @Assert\Type(type="integer")
     */
    private $quantity = 0;

    public function getQuantity()
    {
        return $this->quantity;
    }

    public function setQuantity($quantity)
    {
        $this->quantity = $quantity;
    }
}

/* ...\Controller\DefaultController.php */
<?php

namespace Rialto\ExperimentBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Response;

use Rialto\ExperimentBundle\Entity\LineItem;


class DefaultController extends Controller
{
    public function indexAction()
    {
        return $this->testValidation();
    }

    private function testValidation()
    {
        $item = new LineItem();

        $form = $this->createFormBuilder($item) …
Run Code Online (Sandbox Code Playgroud)

php validation symfony

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