Php Silex:如何以及为什么使用测试

Php Silex:如何以及为什么使用测试,php,testing,silex,Php,Testing,Silex,关于测试的文档对我来说不是很清楚。它说您可以使用测试来检查我的页面和系统是否正常工作 在我看来,这意味着它可以检查所有的权利是否得到了正确的使用或类似的东西。但我不明白为什么我要花这么多时间编写测试部分 我希望有人能解释并说服我为什么应该使用测试,作为第二部分:我应该如何使用它 例如,这可能是我的基本index.php文件: <?php require_once __DIR__.'/../vendor/autoload.php'; $app = new Silex\Applicatio

关于测试的文档对我来说不是很清楚。它说您可以使用测试来检查我的页面和系统是否正常工作

在我看来,这意味着它可以检查所有的权利是否得到了正确的使用或类似的东西。但我不明白为什么我要花这么多时间编写测试部分

我希望有人能解释并说服我为什么应该使用测试,作为第二部分:我应该如何使用它

例如,这可能是我的基本index.php文件:

<?php

require_once __DIR__.'/../vendor/autoload.php';

$app = new Silex\Application();
$app['debug'] = true;

$routes = $app['controllers_factory'];

$routes->match('/', function () use ($app) {
    return 'Hello';
});

$app->mount('/', $routes);
$app->run();

如果您不熟悉软件测试,您可能会想知道为什么需要它。每次对应用程序进行更改时,都必须对其进行测试。这意味着浏览所有页面并确保它们仍然有效。功能测试为您节省了大量时间,因为它们使您能够通过运行单个命令在一秒钟内测试应用程序

资料来源:

假设您有一张联系表。它有3个字段。您希望验证输入数据。到目前为止还不错-很容易理解,对吧?现在,这个验证部分。。这是测试帮助您的棘手部分。手动输入坏/好数据并用眼睛检查是否都好,对您来说是更快,还是更容易键入一个指示绿灯或红灯的命令?现在,联系方式是一个简单的例子。乘以500条不同的路线-什么更快?是人工测试还是计算机自动测试?这就是您编写测试的原因之一。当您想要测试功能时,测试非常有用。使用示例输入和预期输出设计测试。代码中的任何进一步更改都可能导致测试失败,这意味着新代码做错了什么。你可能想搜索一些关于测试驱动开发的东西。好的!很清楚,我已经用一个用户登录的示例路由更新了我的问题。直截了当,没什么特别的。你能回答我如何正确测试这条路线吗?我建议你看一下。它解释了为什么测试是一件好事,并给出了一些例子。另外,官方测试文件中也有很好的参考。
$routes->match('/user/login', function (Request $request) use ($app) {

    $form = $app['form.factory']->createBuilder(FormType::class)
        ->add('username', TextType::class, array(
            'constraints' => array(new Assert\NotBlank(), new Assert\Length(array('min' => 3,'max' => 3))),
            'label' => 'Username',
            'required' => 'required',
            'attr' => array('class' => 'input-field', 'autocomplete' => 'off', 'placeholder' => 'Docent afkorting'),
            'label_attr' => array('class' => 'label'),
            'error_bubbling' => true
        ))
        ->add('password', PasswordType::class, array(
            'constraints' => array(new Assert\NotBlank(), new Assert\Length(array('min' => 5))),
            'label' => 'Password',
            'required' => 'required',
            'attr' => array('class' => 'input-field', 'autocomplete' => 'off', 'placeholder' => 'Wachtwoord'),
            'label_attr' => array('class' => 'label'),
            'error_bubbling' => true
        ))
        ->add('submit', SubmitType::class, [
            'label' => 'Login',
            'attr' => array('class' => 'submit'),
        ])
        ->getForm();

    $form->handleRequest($request);

    if ($form->isValid()) {
        $data = $form->getData();
        $user = new User();

        if($user->login($data['username'],$data['password'])){
            return $app->redirect($app['url_generator']->generate('home'));
        }
        else{
            return $app['twig']->render('form.twig', [
                'content' => 'Incorrect username or password<br><br>',
                'form' => $form->createView(),
            ]);
        }
    }

    return $app['twig']->render('form.twig', [
        'form' => $form->createView()
    ]);
})->bind('user.login');