草庐IT

unit-testing

全部标签

php - 在 Laravel 中测试 Controller 的正确方法是什么?

我正在重写现有的Laravel4应用程序以确保进行充分的测试。长话短说,我已经使用TDD方法重写了我的AccountController类,但我有点头疼。考虑以下呈现包含用户列表的页面的方法:publicfunctiongetIndex(){//buildtheview//return\View::make('account.list-users')->with('users',\Sentry::getUserProvider()->findAll());}我正在使用Smarty呈现我的View并使用Sentry进行身份验证。现在,我想写一些这样的测试:publicfunctionte

php - 如何模拟对象属性?

我正在尝试模拟属性,但无法让它工作。在这种情况下,我尝试模拟请求属性Symfony\Component\HttpFoundation\Request。根据thisanswer我应该为__get返回一个值以下代码一直显示NULL:$testRequest=$this->getMockBuilder('Symfony\Component\HttpFoundation\Request')->disableOriginalConstructor()->getMock();$testRequest->expects($this->any())->method('__get')->with($th

php - "Cannot set session ID after the session has started."测试表单时

我正在为我的应用程序编写单元测试。我编写了一个函数来登录不同的用户(以测试用户级别)和一个函数来生成有效或无效的表单数据(以测试我的表单处理)。当测试提交表单时,它抛出一个异常:UncaughtPHPExceptionLogicException:"CannotsetsessionIDafterthesessionhasstarted."我正在使用Symfony2.6.4。我找不到有关此错误消息的任何有用信息。该测试在不久前运行良好。classControllerTestextendsWebTestCase{public$client=null;public$route='home/'

PHPUnit:在一次测试中对模拟方法使用多个断言是一种不好的做法吗?

我正在测试一个旨在测试用户是否拥有给定电子邮件的对象。因此,在调用“tryEmail”方法时,它会向给定的电子邮件地址发送一strip有确认链接的消息。我的测试看起来像这样:publicfunctiontestSendingWasSuccessful(){$confirmationObject=$this->getMock('LT\EmailConfirmation\Model\ConfirmationObjectInterface');$testType='test.type';$testEmail='test@example.com';$testData=[];//EmailTes

php - 如何将一组测试用例发送到 PHPUnit willReturnOnConsecutiveCalls

我正在尝试将预先计算的测试用例数组发送到模拟中,以便在连续调用时返回-类似于map函数。但是它需要一个参数列表,而不是一个数组。我的数组已经由夹具生成器生成,并且可能具有可变长度。我想做的是这样的事情,但这当然会导致它在第一次调用时返回整个数组。//Inatestcase:$processorMock->method('process')->willReturnOnConsecutiveCalls($fixtureLoader->getProcessorScenarios()//howtoexplodethis?);//classFixtureLoaderpseudocode:func

PHPUnit,测试 "Behaves Like A..."

我有一系列PHPUnit测试来验证类“A类”。我有另一个类,“B类”,它扩展了A类。有没有一种好的方法可以在不复制测试代码的情况下测试“B类通过了A类的测试”,或者换句话说“B类的行为与A类一样”?我可以测试扩展(使用instanceof),但这似乎是一个误导性测试。我关心它的行为是否像A类,而不是它扩展了A类,对吧?还是错了? 最佳答案 只需扩展A类的PHPUnit测试用例,对于B类,就可以了。 关于PHPUnit,测试"BehavesLikeA...",我们在StackOverflo

php - Zend 应用程序的 PHPUnit 测试策略

我一直在用Zend开发一个典型的博客风格的应用程序。到目前为止,我一直在进行最少的测试,但现在我需要进行防弹测试,并且我正在寻求有关我的单元测试策略的一些建议或提示。模型:为了测试模型,我一直在扩展PHPUnit_Framework_TestCase。这似乎工作正常。我已经阅读了Zend_Test_PHPUnit_DatabaseTestCase,但是我不确定我会在哪里使用它?我认为这可能不需要我在每次测试之间删除/创建数据库,但事实似乎并非如此?在每次测试之间删除/创建数据库变得非常痛苦,因为我有很多测试数据。有什么简单的方法可以解决这个问题(例如模拟数据库?),还是我应该减少测试数

php - Laravel 和 Simpletest

我正在尝试使用Simpletest对Laravel进行单元测试。我知道Laravel集成了PHPUnit支持,我知道PHPUnit是行业标准,但在我的上一个项目(CakePHP1.3)中使用了simpletest,我希望我也可以在Laravel中使用。截至目前,在Laravel文档中没有提及Simpletest。博客/教程的链接将不胜感激。 最佳答案 我不明白你遇到的问题。您可以选择要使用的单元测试工具,因为您应该只测试自己编写的代码,而不是其他人的代码。你可以创建一个像“simpletests”这样的文件夹,你可以在里面放你的Bo

php - 单元测试 Yii 行为

我正在寻找一种基于CActiveRecordBehavior对Yii行为进行单元测试的方法。由于相关行为可用于许多模型,我想独立于任何模型对其进行测试,但我不知道如何去做。Yii源代码使用专为测试制作的数据库表对CTimestampBehavior进行了单元测试。我有很多行为要测试,不想为每个行为都创建一个表-任何人都可以建议一个更好的策略来测试行为而不依赖于特定模型或表吗?也许有什么方法可以“伪造”一个CActiveRecord模型?[edit]澄清一下——我不希望我的测试依赖于存在的特定模型或数据库表——我只想测试行为。为了让事情变得更有趣,该行为附加到onAfterConstru

PhpUnit 忽略了它的 XML 配置文件中的*一些*指令

在每一步都使用PHPUnit开发库时,一切都很好。然后我把这个库推到网上并删除了文件夹。一段时间后,我克隆了一个新的存储库实例以继续开发,在克隆项目的根文件夹中运行完全相同的PHPUnit二进制文件(通过Composer在全局安装)(因此,有效地再现了原始条件),并注意到即使PHPUnit读取文件夹内的配置(它是这样说的),它也忽略了一些值,即使用颜色和目标仅tests文件夹。相反,它确实运行了我所有的测试并且它们都成功了,但它生成了PHPUnit二进制文件所在的文件夹的覆盖范围,并且更深。然后我尝试了同样的方法,但使用的是新下载的phpunit.phar。这一次产生了不同但也很奇怪的