プロジェクトのテストを自動化するためにjenkinsを構成しました。ユニットテストはうまく機能します。次に、データベースを使用してテストを行います。たとえば、ログインテスト:ユーザー名とパスワードを入力します(フォームを送信します)。これを行う方法についてのアイデアはありますか?ありがとうございました。
これが私がやりたいテストですが、機能しません:ホームページを取得し、リンクFAQが2回存在するかどうかをテストし、最初のFAQリンクをクリックし、リンクRMKが存在するかどうかをテストし、ログインをクリックして、テストするかどうかをテストします。パスワードリンクが存在することを忘れた場合は、ユーザー名とパスワードを入力してフォームを送信し、プロファイルページを取得して、[プロファイル]リンクが存在するかどうかをテストします。
<?php
namespace RMK\SocialBundle\Tests\FunctionalTests\Controller\Website;
use RMK\SocialBundle\Controller\Website;
use Symfony\Component\DomCrawler\Crawler;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken;
use Symfony\Component\HttpFoundation\ParameterBag;
use Symfony\Bundle\FrameworkBundle\Controller\RedirectController;
use Symfony\Bundle\FrameworkBundle\Tests\TestCase;
use Symfony\Bundle\FrameworkBundle\Controller\ControllerNameParser;
class HomeControllerTest extends WebTestCase
{
public function testViewFAQ(){
$client = static::createClient();
$crawler = $client->request('GET', '/home');
$this->assertEquals(2, $crawler->filter('a:contains("FAQ")')->count());
$this->assertEquals(2, $crawler->filter('a:contains("FAQ")')->count());
$faqlink = $crawler->filter('a:contains("FAQ")')->eq(0)->link();
$crawler = $client->click($faqlink);
$this->assertEquals(1, $crawler->filter('a:contains("RMK")')->count());
$loginLink = $crawler->filter('a:contains("Login")')->eq(0)->link();
$crawler = $client->click($loginLink);
$this->assertEquals(1, $crawler->filter('a:contains("Forgot Password?")')->count());
$form = $crawler->selectButton('_submit')->form();
$form['_username'] = 'username';
$form['_password'] = 'test';
$crawler = $client->submit($form);
$crawler = $client->followRedirect();
$crawler = $client->request('GET', '/profile');
$this->assertEquals(1, $crawler->filter('a:contains("My Profile")')->count());
}
}
?>
最後のアサーションは次のように失敗しました。0が期待される1と一致するというアサーションに失敗しました。var_dump(print_r($ client-> getResponse()-> getContent())); この最後のアサートの直前に、私はこれを取得しました:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="refresh" content="1;url=/home" />
<title>Redirecting to /home</title>
</head>
<body>
Redirecting to <a href="/home">/home</a>.
</body>
</html>bool(true)
私は何かを逃したと確信していますが、私は何を知りません。アイデアはありますか?どうも。PS:私はUbuntu12.04を使用しています。