我刚刚开始使用PHPUnit。到目前为止,除了DataProvider问题外,一切都很完美。问题是当我运行测试时,它通过了。但是,如果我再次运行它,它会失败并出现以下错误:ArgumentCountError:ToofewargumentstofunctionValidationTest::testValidateType(),0passedandatleast3expected如果我对数据提供程序函数进行任何更改(即更改要返回的数据、提供程序函数名称等)并重新运行,它会通过一次并失败,并在所有连续测试运行中出现上述错误。我使用的是最新版本的PHPUnit(一小时前更新)。不幸的是,我
似乎我在这里遗漏了一些东西,但我正在努力为集成了SendOwlwebhook的Laravel实现测试。这是我正在使用的文档:https://help.sendowl.com/help/using-web-hooks请注意,我已经在VerifyCSRFToken中添加了exclude的路由使用ngrok(将webhook设置为转到本地开发人员的ngrokurl)我已确认Controller代码手动正常工作,并且webhook工作。我坚持的是如何实际实现可以自动执行此操作的测试。例如,如果您尝试断言状态,这将不起作用,它将是500。$response=$this->call('post',
我在我的网站上使用Facebook登录并查看此示例:https://github.com/facebook/php-sdk/blob/master/examples/example.php当我在示例站点上点击“使用Facebook登录”时,出现错误:AnerroroccurredwithPHPSDKUnitTests.Pleasetryagainlater.知道为什么会发生这种情况吗? 最佳答案 我之前遇到过同样的错误(现已解决)。我犯的错误是使用旧方法调用FacebookAPI,即$appid='xxx';$secret='xxx
我有这样一个代码:publicfunctionone(){try{$this->two();}catch(Exception$E){$this->three();}}我如何测试调用了$this->three()函数?我尝试“按代码模拟”$this->two()并抛出错误而不是它的原始代码,但最终错误被phpunit本身捕获。尝试了setExpectedException,但它也没有解决问题-catch再次在phpunit中运行,只是被忽略了。函数$this->three()在这两种情况下都没有被调用。谢谢! 最佳答案 问题是所描述的
我在使用phpunit命令测试我的应用程序时遇到上述错误。publicfunctiontestProductCreationFailsWhenNameNotProvided(){$product=factory(\App\Product::class)->make(['name'=>'']);$this->post(route('api.products.store'),$product->jsonSerialize())->seeJson(['name'=>['Thenamefieldisrequired.']])/*line86*/->assertResponseStatus(42
我正在使用PHPUnit生成代码覆盖率报告vendor/bin/phpunit--coverage-clovercoverage.clover我有一些代码库在他们的测试中使用了@covers标签,表明他们测试的服务。在这些代码库中,没有针对值对象等事物的专门测试。这导致覆盖率报告表明很多代码没有经过测试,而实际上是这样。这使得很难通过查看覆盖率报告找到实际未经测试的代码。解决此问题的一种方法是删除@covers标记,尽管这些标记对于指示意图很有用,并且在IDE识别它们时它们有助于导航。因此我希望PHPUnit忽略这些标签。我发现有一个--disable-coverage-ignore标
我正在开发一个用symfony框架编写的基于PHP的网站。我想进行自动化GUI测试。我所知道的测试是PHPUnit测试,它不适用于我的GUI应用程序。除了Selenium1或2之外,是否有特定的测试框架。我正在寻找一种易于理解的框架,它能够重复进行测试。有什么适合我的phpsymfony网站的好东西吗?哪些易于使用(我需要进行测试,但我没有太多时间,但是,我不想忽略它)。该网站并不复杂。但它针对具有不同权限的不同用户角色具有不同的子站点。那么是否有一个简单的框架可以让我快速、有效地测试我的应用程序以发现错误并创建测试报告? 最佳答案
我有一系列PHPUnit测试来验证类“A类”。我有另一个类,“B类”,它扩展了A类。有没有一种好的方法可以在不复制测试代码的情况下测试“B类通过了A类的测试”,或者换句话说“B类的行为与A类一样”?我可以测试扩展(使用instanceof),但这似乎是一个误导性测试。我关心它的行为是否像A类,而不是它扩展了A类,对吧?还是错了? 最佳答案 只需扩展A类的PHPUnit测试用例,对于B类,就可以了。 关于PHPUnit,测试"BehavesLikeA...",我们在StackOverflo
假设我有这样的测试:classSortTestextendsPHPUnit_Extensions_Selenium2TestCase{publicfunctionsetUp(){$this->setHost('192.168.1.1');$this->setBrowserUrl('http://some.url/');$this->setBrowser('chrome');}publicfunctiontestFoo(){$this->url('/foo');}publicfunctiontestBar(){$this->url('/bar');}}如果我运行这个测试,我会看到每次加载
我正在使用PHP在数据库中创建一些对象。有时,如果用户在创建对象时请求对象,他们可以看到部分创建的对象(主数据库条目存在但尚未插入所有子对象)。我最近实现了一个修复程序,我的代码将仅在通过向数据库条目添加“创建”标志完全创建对象后提供该对象。我如何测试它?我正在使用phpunit。我看到的两个问题是我需要并行线程来同时发出创建和获取请求,并且我需要确保时机正确以便我可以实际测试竞争条件(而不仅仅是获取对象完全创建之后)。我希望我的测试看起来像这样,但我愿意接受建议:线程1:创建对象线程2:尝试在对象完全创建之前获取对象(应返回错误)线程1:在对象创建后获取对象(应该可以)