0

プロジェクトのテストを自動化するために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を使用しています。

4

0 に答える 0