这不是一个问题,而是试图在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) 我正在使用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身份验证器,这样如果第一个成功,第二个会被跳过?
我安装了PHPUnit和xdebug,在CLI的php.ini文件中我得到了:
display_errors = On
xdebug.default_enable = 1
Run Code Online (Sandbox Code Playgroud)
我已经验证了当我使用交互式控制台创建错误时会打印xdebug回溯,但是当运行phpunit时发生错误时,没有回溯?
回溯发生了什么?phpunit是否将它隐藏起来?有什么设置我不见了?
谢谢!
我正在将一个旧的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 \前缀的任何内容?
更新:由于我没有得到任何答案,我使用一个更简单的例子重写了整篇文章.希望这有助于揭露问题.
我在表单验证方面遇到了麻烦.我可以使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 ×4
symfony ×3
phpunit ×2
annotations ×1
backtrace ×1
depends ×1
doctrine ×1
mocking ×1
validation ×1
xdebug ×1