How to create a mock object of a doctrine entity?(如何创建学说实体的模拟对象?)
问题描述
我正在尝试使用 phpunit 为使用学说 2 的模型编写单元测试.我想模拟学说实体,但我真的不知道如何执行此操作.谁能向我解释我需要怎么做?我正在使用 Zend 框架.
I'm trying to write a unit test with phpunit for a model that uses doctrine 2. I want to mock the doctrine entities but I really don't have a clue of how to do this. Can anyone explain to me how I need to do this? I'm using Zend Framework.
需要测试的模型
Bootstrap.php
扩展模型
推荐答案
Doctrine 2 实体应该像任何旧类一样对待.您可以像 PHPUnit 中的任何其他对象一样模拟它们.
Doctrine 2 Entities should be treated like any old class. You can mock them just like any other object in PHPUnit.
从 PHPUnit 5.4 开始,getMock() 方法已被弃用.请改用 createMock() 或 getMockbuilder().
As of PHPUnit 5.4, the method getMock() has been depricated. Use createMock() or getMockbuilder() instead.
正如@beberlei 所指出的,您在 Entity 类本身中使用 EntityManager,这会产生许多棘手的问题,并且破坏了 Doctrine 2 的主要目的之一,即 Entity 不关心自己的持久性.这些查找"方法确实属于 存储库类.
As @beberlei noted, you are using the EntityManager inside the Entity class itself, which creates a number of sticky problems, and defeats one of the major purposes of Doctrine 2, which is that Entity's aren't concerned with their own persistance. Those 'find' methods really belong in a repository class.
这篇关于如何创建学说实体的模拟对象?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!