简体   繁体   中英

Using Behat inside a Laravel Homestead Box

Laravel Homestead is nice, but I'm struggling to get my behat tests that worked inside my old Vagrant Box to work.

I have the following behat.yml file:

default:
    paths:
        features: app/tests/acceptance
    extensions:
        Behat\MinkExtension\Extension:
            goutte: ~
            base_url: http://personal.dev
    formatter:
        name:               pretty,html
        parameters:
            output_path:    null,jm_behat_report.html
            selenium2:
                wd_host: "http://localhost:8643/wd/hub"

A sample of the output my behat tests give now is:

Given I am logged in                                                        # FeatureContext::iAmLoggedIn()
  exception 'InvalidArgumentException' with message 'Expecting a DOMNodeList or DOMNode instance, an array, a string, or null, but got "boolean".' in vendor/symfony/dom-crawler/Symfony/Component/DomCrawler/Crawler.php:88
  Stack trace:
  #0 vendor/symfony/dom-crawler/Symfony/Component/DomCrawler/Crawler.php(832): Symfony\Component\DomCrawler\Crawler->add(false)
  #1 vendor/symfony/dom-crawler/Symfony/Component/DomCrawler/Crawler.php(619): Symfony\Component\DomCrawler\Crawler->filterRelativeXPath('descendant-or-s...')
  #2 vendor/behat/mink-browserkit-driver/src/Behat/Mink/Driver/BrowserKitDriver.php(317): Symfony\Component\DomCrawler\Crawler->filterXPath('//html/.//*[sel...')
  #3 vendor/behat/mink/src/Behat/Mink/Element/Element.php(91): Behat\Mink\Driver\BrowserKitDriver->find('//html/.//*[sel...')
  #4 vendor/behat/mink/src/Behat/Mink/Element/Element.php(67): Behat\Mink\Element\Element->findAll('named', Array)
  #5 vendor/behat/mink/src/Behat/Mink/Element/TraversableElement.php(167): Behat\Mink\Element\Element->find('named', Array)
  #6 vendor/behat/mink/src/Behat/Mink/Element/TraversableElement.php(180): Behat\Mink\Element\TraversableElement->findField('username')
  #7 vendor/behat/mink-extension/src/Behat/MinkExtension/Context/MinkContext.php(111): Behat\Mink\Element\TraversableElement->fillField('username', 'test')
  #8 app/tests/acceptance/bootstrap/FeatureContext.php(54): Behat\MinkExtension\Context\MinkContext->fillField('username', 'test')
  #9 [internal function]: FeatureContext->iAmLoggedIn()
  #10 vendor/behat/behat/src/Behat/Behat/Definition/Annotation/Definition.php(155): call_user_func_array(Array, Array)
  #11 vendor/behat/behat/src/Behat/Behat/Tester/StepTester.php(157): Behat\Behat\Definition\Annotation\Definition->run(Object(FeatureContext))
  #12 vendor/behat/behat/src/Behat/Behat/Tester/StepTester.php(126): Behat\Behat\Tester\StepTester->executeStepDefinition(Object(Behat\Gherkin\Node\StepNode), Object(Behat\Behat\Definition\Annotation\Given))
  #13 vendor/behat/behat/src/Behat/Behat/Tester/StepTester.php(95): Behat\Behat\Tester\StepTester->executeStep(Object(Behat\Gherkin\Node\StepNode))
  #14 vendor/behat/gherkin/src/Behat/Gherkin/Node/AbstractNode.php(42): Behat\Behat\Tester\StepTester->visit(Object(Behat\Gherkin\Node\StepNode))
  #15 vendor/behat/behat/src/Behat/Behat/Tester/ScenarioTester.php(148): Behat\Gherkin\Node\AbstractNode->accept(Object(Behat\Behat\Tester\StepTester))
  #16 vendor/behat/behat/src/Behat/Behat/Tester/ScenarioTester.php(87): Behat\Behat\Tester\ScenarioTester->visitStep(Object(Behat\Gherkin\Node\StepNode), Object(Behat\Gherkin\Node\ScenarioNode), Object(FeatureContext), Array, false)
  #17 vendor/behat/gherkin/src/Behat/Gherkin/Node/AbstractNode.php(42): Behat\Behat\Tester\ScenarioTester->visit(Object(Behat\Gherkin\Node\ScenarioNode))
  #18 vendor/behat/behat/src/Behat/Behat/Tester/FeatureTester.php(88): Behat\Gherkin\Node\AbstractNode->accept(Object(Behat\Behat\Tester\ScenarioTester))
  #19 vendor/behat/gherkin/src/Behat/Gherkin/Node/AbstractNode.php(42): Behat\Behat\Tester\FeatureTester->visit(Object(Behat\Gherkin\Node\FeatureNode))
  #20 vendor/behat/behat/src/Behat/Behat/Console/Command/BehatCommand.php(150): Behat\Gherkin\Node\AbstractNode->accept(Object(Behat\Behat\Tester\FeatureTester))
  #21 vendor/behat/behat/src/Behat/Behat/Console/Command/BehatCommand.php(128): Behat\Behat\Console\Command\BehatCommand->runFeatures(Object(Behat\Gherkin\Gherkin))
  #22 vendor/symfony/console/Symfony/Component/Console/Command/Command.php(241): Behat\Behat\Console\Command\BehatCommand->execute(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
  #23 vendor/symfony/console/Symfony/Component/Console/Application.php(885): Symfony\Component\Console\Command\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
  #24 vendor/symfony/console/Symfony/Component/Console/Application.php(191): Symfony\Component\Console\Application->doRunCommand(Object(Behat\Behat\Console\Command\BehatCommand), Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
  #25 vendor/behat/behat/src/Behat/Behat/Console/BehatApplication.php(68): Symfony\Component\Console\Application->doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
  #26 vendor/symfony/console/Symfony/Component/Console/Application.php(121): Behat\Behat\Console\BehatApplication->doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
  #27 vendor/behat/behat/bin/behat(32): Symfony\Component\Console\Application->run()
  #28 {main}

There seems to be a bug in the Symfony component dom-crawler version 2.4.5. If you exclude this specific version in your composer.json, your problem should be resolved. Just add this line to your composer.json require section (and run composer update after):

"symfony/dom-crawler" : "*,!=2.4.5"

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM