我正在使用Laravel为IOS应用程序构建API。我在使用PHPUnit和内置的Laravel测试测试Web应用程序时遇到了主要问题。我的流程是1.用户有一个帐户2.用户需要经过身份验证才能执行任何操作。假设我有一组用户,并且一个用户(所有者)可以管理属于他们的一个组的成员。我想测试用户将其他成员添加到他们的组的能力。我有一个名为testAddGroupMemberPass()的测试方法,它应该创建一个用户(所有者)创建一个组并指定所有者创建一个用户添加到组中断言所有者有能力添加该成员。publicfunctiontestAddGroupMemberPass(){//1.create
我怀疑我的问题的“最佳”答案是使用依赖注入(inject)并完全避免该问题。不幸的是我没有那个选项...我需要为一个导致第三方库被实例化的类编写测试。我想模拟/stub库类,这样它就不会进行实时API调用。我在CakePHPv3.x框架中使用phpunit。我能够模拟库并创建stub响应,但这并不能阻止“真实”类被我的测试之外的代码实例化。我考虑过尝试模拟实例化上游的类,但是它们很多,这会使测试编写/维护起来非常笨拙。有没有办法以某种方式“stub”类的实例化?类似于我们可以告诉php单元期待API调用并预设返回数据的方式? 最佳答案
我正在尝试为我的laravel5.2项目创建一个测试,它将测试rest资源Controller中的注册页面。当我使用测试的确切输入手动测试它时,一切正常,但是当我使用phpunit测试它时,我被重定向到错误页面,使我的页面断言失败。然而,错误显示断言失败的错误,而不是错误页面上的内容,因此没有显示测试失败的原因。我怎么才能看到这个?测试用例:classregisterTestextendsTestCase{useWithoutMiddleware;publicfunctiontestRegisterCompanyCorrectly(){$this->actAsAdmin();$this
我刚刚开始使用PHPUnit。到目前为止,除了DataProvider问题外,一切都很完美。问题是当我运行测试时,它通过了。但是,如果我再次运行它,它会失败并出现以下错误:ArgumentCountError:ToofewargumentstofunctionValidationTest::testValidateType(),0passedandatleast3expected如果我对数据提供程序函数进行任何更改(即更改要返回的数据、提供程序函数名称等)并重新运行,它会通过一次并失败,并在所有连续测试运行中出现上述错误。我使用的是最新版本的PHPUnit(一小时前更新)。不幸的是,我
我正在为工作中的旧PHP代码库添加单元测试。我将测试然后重写大量HTML生成代码,目前我只是测试生成的字符串是否与预期的字符串相同,如下所示:(使用PHPUnit)publicfunctiontestConntype_select(){$this->assertEquals('Sometext',conntype_select(1);//Avaluefromthetestdataset.);}这种方式的缺点是属性顺序、空格和许多其他不相关的细节也会被测试。我想知道是否有更好的方法来做到这一点。例如,是否有任何好的和简单的方法来比较生成的DOM树。我为ruby找到了非常相似的问题,但找不
我们有一个Phing脚本,Hudson使用它来构建/测试我们的PHP网站。我们的一些单元测试加载主函数库;其他人使用模拟来避免必须这样做(或为测试提供特定的伪造结果)。单元测试在单独运行时(即在命令行上,使用phpunit)运行完美。但是,当我们在Phing中将它们作为批处理一起运行时,我们会出错。错误出现在我们为某些功能编写模拟的测试中。该错误表明我们声明了该函数两次。它显然是在尝试包括真实的函数库和模拟。测试包括相互排斥的代码,因此它们需要彼此隔离运行;Phing似乎在一个进程中运行它们,因此包含冲突。phing脚本的相关部分如下所示:有没有办法让phing独立运行测试,而无需在构
我在我的网站上使用Facebook登录并查看此示例:https://github.com/facebook/php-sdk/blob/master/examples/example.php当我在示例站点上点击“使用Facebook登录”时,出现错误:AnerroroccurredwithPHPSDKUnitTests.Pleasetryagainlater.知道为什么会发生这种情况吗? 最佳答案 我之前遇到过同样的错误(现已解决)。我犯的错误是使用旧方法调用FacebookAPI,即$appid='xxx';$secret='xxx
当我使用YII框架运行PHP单元测试时,出现以下错误:PHPFatalerror:Uncaughtexception'LogicException'withmessage'Function'phpunit_autoload'notfound(function'phpunit_autoload'notfoundorinvalidfunctionname)'in/var/www/yii/framework/YiiBase.php:628有谁知道如何解决这个问题? 最佳答案 这是YIICTestCase.php(yii/framework
我一直在关注一般的Mockery和PHP-Unit教程-包括JeffreyWay介绍的使用PHP-Unit和Mockery测试Laravel。然而,对于这个应用程序——我们可以接受对Eloquent的依赖,而不是创建一个存储库类。我们能够很好地模拟Widget模型的实例方法。但是,我们正在使用Route:model绑定(bind),我承认我不确定在测试Controller的show($widget)方法时如何模拟模型的find()方法。我读过https://github.com/padraic/mockery/wiki#mocking-public-static-methods文档,并
我正在使用dbunit进行phpunit测试。这是我第一次在php中进行测试。我正在通过此命令创建xml:mysqldump--xml-t-uusername-pdatabase>seed.xml之后根据docxml应采用以下格式:但在我生成的xml中它看起来像:11asdas2asDASD当我试图在我的测试类中运行它时:$this->createMySQLXMLDataSet('seed.xml');我收到这个错误:PHPUnit_Extensions_Database_Exception:Therootelementofaflatxmldatasetfilemustbecalled