草庐IT

unit-testing

全部标签

php - 如何在 PHP 单元测试中模拟在构造函数中调用的方法?

我在对具有在构造函数中调用的方法的类进行单元测试时遇到问题。我不明白如何mock这个。也许我应该使用phpUnit的“setUp”方法?我正在使用Mockery库。还有比这更好的工具吗?classToTest{function__construct(){$this->methodToMock();//needtomockthatforfuturetests}//mymethodsclass}如有任何建议,我们将不胜感激。 最佳答案 如果您的类难以实例化以进行测试,则说明您的类在构造函数中做了太多工作或正在做一些工作。http://m

php - Mock 应该恰好被调用 1 次但被调用 0 次

我在使用Laravel5和PHPUnit时遇到了奇怪的问题。当我尝试模拟Laravel的外观(例如Auth、View、Mail)时,我总是得到这个异常:Mockery\Exception\InvalidCountException:Methodsend("emails.register",array('user'=>'object(MCC\Models\Users\User)',),object(Closure))fromMockery_0_Illuminate_Mail_Mailershouldbecalledexactly1timesbutcalled0times.我对"shoul

php - 您为 Symfony 使用哪个单元测试框架?

您为Symfony使用哪个单元测试框架?石灰还是PHPUnit?使用它们的优缺点是什么? 最佳答案 在我看来,我想到了以下几点:PHPUnit与其他工具的集成度更高,例如,Selenium(PHPUnit可以用它打开真正的真实浏览器来测试你的网站)phpUnderControl用于持续集成PHPUnit与Xdebug配合良好,生成代码覆盖率报告PHPUnit使用更广泛;这可能意味着更多的支持但请注意,我不使用symfony,也不使用lime...不过,除了那些使用symfony的人之外,我从未听过任何人谈论它——这不是一件好事,因为

php - PHP 中的单元测试 cookie

依赖session/cookie信息的单元测试功能的默认做法是使用抽象库。但是如果我想编写这个抽象库并对其进行单元测试怎么办?PHP的文档setcookiefunction表示该cookie将在下一次请求时可用。使用命令行工具进行测试,没有所谓的“请求”。那么如何对正确的cookie设置进行单元测试呢?我想测试我的抽象库是否正确设置了setcookie函数的所有参数。这些参数将根据特定条件和方法调用进行设置。我能想到的唯一解决方案是使用我不想安装的runkit扩展来模拟setcookie函数。其他想法? 最佳答案 我找到了另一个非常

PHPUnit 模拟 - 当方法调用 x 次时立即失败

使用PHPUnit,我正在使用->at()测试一系列方法调用,如下所示:$mock->expects($this->at(0))->method('execute')->will($this->returnValue('foo'));$mock->expects($this->at(1))->method('execute')->will($this->returnValue('bar'));$mock->expects($this->at(2))->method('execute')->will($this->returnValue('baz'));如何设置模拟,以便在上述情况下,如

php - 是否可以在不扩展 PHPUnit_Framework_TestCase 的情况下使用 PHPUnit 断言?

也许这个问题看起来很奇怪,但这是我要解决的问题...首先,请记住我更像是一个习惯使用PHP的Java开发人员,所以也许我的思维过程有问题!我正在测试我用Symfony构建的网站。对于我的组件测试,我创建了扩展WebTestCase的测试类,我的测试有一组如下所示的断言来验证页面标题是否在我想要的位置并包含我期望的内容:$text="PageTitle";$selector="h2#pageHeading";$this->assertEquals(1,$crawler->filter($selector)->count(),"Foundwrongnumberofelementsusing

php - 在快完成时开始使用单元测试是否现实?

我已经在一个项目中工作了2个半月,它实际上已经完成了。然而,我不断看到我过去修复的一些错误,这些错误又回来惹恼了我。然后我再次修复它们,另一个让我烦恼。我知道,我知道,我一开始没有使用phpunit和selenium犯了一个错误,但现在开始使用它是否可行或现实(即使项目在1周内结束,我还有一些部分需要完成)?提前致谢 最佳答案 编写一些单元测试永远不会太晚。您有绝佳的机会添加单元测试-并展示它的值(value)-因为您有错误需要修复。因此,编写显示错误发生的测试,修复错误,然后重新运行测试。如果问题再次出现,您将获得绿灯,并有信心立

php - 如何在单元测试(PHPUnit)中的 trigger_error(..., E_USER_WARNING) 之后执行代码?

我有这样的代码:classToBeTested{functionsimpleMethod($param){if(0===$param){trigger_error("Paramis0!",E_USER_WARNING);returnfalse;}returntrue;}}并测试这段代码:classSimpleTestextendsPHPUnit_Framework_TestCase{functiontestSimpleMethod(){$toBeTestedObject=newToBeTested();$this->assertFalse($toBeTestedObject->simp

php - 这个解决方案有什么问题? (Perm-Missing-Elem codility test)

我已经开始玩codility并遇到了这个问题:Azero-indexedarrayAconsistingofNdifferentintegersisgiven.Thearraycontainsintegersintherange[1..(N+1)],whichmeansthatexactlyoneelementismissing.Yourgoalistofindthatmissingelement.Writeafunction:intsolution(intA[],intN);that,givenazero-indexedarrayA,returnsthevalueofthemissi

php - 模拟 Laravel Controller 依赖

在我的Laravel应用程序中,我有一个带有显示特定资源方法的Controller。例如。假设url是/widgets/26我的Controller方法可能会像这样工作:ClassWidgetsController{protected$widgets;publicfunction__construct(WidgetsRepository$widgets){$this->widgets=$widgets;}publicfunctionshow($id){$widget=$this->widgets->find($id);returnview('widgets.show')->with(c