我相信我不清楚 BehatContext 与 MinkContext 的区别,也不确定为什么我会从我的应用程序中的一个或另一个继承。基本上我不清楚为什么我必须在每个函数中实例化一个新的 Client 对象。我应该可以使用 $this,因为我的 behat.yml 文件中加载了 goutte。
请问有什么提示吗?
<?php
namespace Main\ReferralCaptureBundle\Features\Context;
use Main\ReferralCaptureBundle\Features\Context\FeatureContext;
use Symfony\Component\HttpKernel\KernelInterface;
use Behat\Symfony2Extension\Context\KernelAwareInterface;
use Behat\MinkExtension\Context\MinkContext;
use Behat\MinkExtension\Context\RawMinkContext;
use Behat\Behat\Context\BehatContext,
Behat\Behat\Exception\PendingException;
use Behat\Gherkin\Node\PyStringNode,
Behat\Gherkin\Node\TableNode;
use Goutte\Client;
//
// Require 3rd-party libraries here:
//
require_once 'PHPUnit/Autoload.php';
require_once 'PHPUnit/Framework/Assert/Functions.php';
//
/**
* Feature context.
*/
class FeatureContext extends RawMinkContext //MinkContext if you want to test web
implements KernelAwareInterface
{
private $kernel;
private $parameters;
/**
* Initializes context with parameters from behat.yml.
*
* @param array $parameters
*/
public function __construct(array $parameters)
{
$this->parameters = $parameters;
$this->useContext('behat', new BehatContext);
$this->useContext('mink', new MinkContext);
}
/**
* Sets HttpKernel instance.
* This method will be automatically called by Symfony2Extension ContextInitializer.
*
* @param KernelInterface $kernel
*/
public function setKernel(KernelInterface $kernel)
{
$this->kernel = $kernel;
}
/**
* @Given /^I am on homepage$/
*/
public function iAmOnHomepage()
{
// $this->getSession()->visit("/");
$client = new Client();
$crawler = $client->request('GET', 'http://local.referral.com/');
$link = $crawler->selectLink('I am a Physician')->link();
if (!count($link)>0)
{
throw new Exception("Home Page Not Loaded:\n");
}
}
/**
* @Given /^I follow "([^"]*)"$/
*/
public function iFollow($arg1)
{
$client = new Client();
$crawler = $client->request('GET', 'http://local.referral.com/');
$link = $crawler->selectLink('Register')->link();
$crawler = $client->click($link);
}
/**
* @When /^I fill in "([^"]*)" with "([^"]*)"$/
*/
public function iFillInWith($arg1, $arg2)
{
throw new PendingException();
}
/**
* @Given /^I press "([^"]*)"$/
*/
public function iPress($arg1)
{
throw new PendingException();
}
/**
* @Then /^I should see "([^"]*)"$/
*/
public function iShouldSee($arg1)
{
throw new PendingException();
}
/**
* @Given /^I should be on homepage$/
*/
public function iShouldBeOnHomepage()
{
throw new PendingException();
}
}