Silex:如何以及为何使用测试
Silex: How and why to use testing
关于测试的文档我不是很清楚。它说你可以使用测试来检查我的页面和我的系统是否正常工作。
在我看来,这意味着它可以检查是否正确使用了所有权利或类似的东西。但我不明白为什么我会花这么多时间编写测试部分。
我希望有人能解释并说服我为什么要使用测试,作为第二部分:我应该如何使用它!
因此,举个例子,这可能是我的基本 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();
你能给我一个例子或者调整我的路线并进行一些测试吗?请不要使用文档中的示例:它们对我来说没有意义,这就是我在这里提问的全部原因。
编辑
所以,您的评论都很有帮助。我想我开始明白为什么它可能有用。现在,我只需要一个例子来充分理解它。假设我有这条路线:
$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');
我需要做什么才能进行适当的测试?
如果您不熟悉软件测试,您可能想知道为什么需要这个。每次对应用程序进行更改时,都必须对其进行测试。这意味着检查所有页面并确保它们仍在工作。功能测试可为您节省大量时间,因为它们使您能够通过 运行 一条命令通常在一秒钟内测试您的应用程序。
关于测试的文档我不是很清楚。它说你可以使用测试来检查我的页面和我的系统是否正常工作。
在我看来,这意味着它可以检查是否正确使用了所有权利或类似的东西。但我不明白为什么我会花这么多时间编写测试部分。
我希望有人能解释并说服我为什么要使用测试,作为第二部分:我应该如何使用它!
因此,举个例子,这可能是我的基本 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();
你能给我一个例子或者调整我的路线并进行一些测试吗?请不要使用文档中的示例:它们对我来说没有意义,这就是我在这里提问的全部原因。
编辑
所以,您的评论都很有帮助。我想我开始明白为什么它可能有用。现在,我只需要一个例子来充分理解它。假设我有这条路线:
$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');
我需要做什么才能进行适当的测试?
如果您不熟悉软件测试,您可能想知道为什么需要这个。每次对应用程序进行更改时,都必须对其进行测试。这意味着检查所有页面并确保它们仍在工作。功能测试可为您节省大量时间,因为它们使您能够通过 运行 一条命令通常在一秒钟内测试您的应用程序。