Me preguntaba si puedo verificar si una 'clase' tiene una función. assertClassHasAttribute no funciona, es normal ya que una Función no es un Atributo.How PHPUnit assertFunction
Respuesta
Cuando no hay un método afirmación proporcionada por PHPUnit que sea crear o utilizar una de las afirmaciones de nivel inferior con un mensaje detallado:
$this->assertTrue(
method_exists($myClass, 'myFunction'),
'Class does not have method myFunction'
);
assertTrue()
es tan básico que se puede obtener. Permite una gran flexibilidad porque puede usar cualquier función php incorporada que devuelva un valor bool para su prueba. En consecuencia, cuando falla la prueba, el mensaje de error/falla no es útil en absoluto. Algo así como Failed asserting that <FALSE> is TRUE
. Es por eso que es importante pasar el segundo parámetro a assertTrue()
que detalla por qué falló la prueba.
Pruebas de unidad e integración son para probar comportamientos que no se repiten cuál es la definición de clase.
Por lo tanto, PHPUnit no proporciona dicha afirmación. PHPUnit puede afirmar que sea una clase tiene un nombre de X, que una función devuelve el valor somthing, pero se puede hacer lo que quiere usando:
/**
* Assert that a class has a method
*
* @param string $class name of the class
* @param string $method name of the searched method
* @throws ReflectionException if $class don't exist
* @throws PHPUnit_Framework_ExpectationFailedException if a method isn't found
*/
function assertMethodExist($class, $method) {
$oReflectionClass = new ReflectionClass($class);
assertThat("method exist", true, $oReflectionClass->hasMethod($method));
}
impresionante. esto suena perfecto para mi necesidad. Gracias @MounaCheikhna – shan
- 1. CSS 'schema' how-to
- 2. How. * (Dot star) funciona?
- 3. How to force emacs recolor
- 4. How-To Mock MSMQ MessageQueue
- 5. Django Projects as Desktop applications: how to?
- 6. How to Rubber band en OpenGl
- 7. How-To Auto ¿Descubre un servicio WCF?
- 8. Hibernate optimistic locking..how it works?
- 9. Mockito: how to stub getter setter
- 10. PHPUnit - Errores
- 11. PHPUnit: manejo
- 12. Windows Instalación PHPUnit mediante PEAR - Instalación de PHPUnit mediante PEAR
- 13. PHPUnit y Globals
- 14. Constantes globales en PHPUnit
- 15. Configurando PHPUnit en OSX
- 16. Eclipse PDT y PHPUnit?
- 17. PHPUnit Code Coverage
- 18. Selenium, PHPUnit y AttachFile()
- 19. PHPUnit StackTest :: assertEmpty() obsoleto
- 20. Vim errorformat for phpunit
- 21. actualizar phpunit windows
- 22. PHPUnit Database Testing
- 23. PHPUnit y morir función
- 24. NHibernate.Spatial and Sql 2008 Geography type - How to configure
- 25. jQuery ajax request with json response, how to?
- 26. Javafx 2.0 How-to Application.getParameters() en un archivo Controller.java
- 27. Conceptos básicos sobre el generador de feed-how cómo
- 28. How/Why is imagedata almacenado como char - OpenCV
- 29. How to: UiBinder + GWT MVP + áreas de visualización independientes múltiples
- 30. How-to build sistema de etiquetado como stackoverflow
por qué le gustaría probar eso? – Gordon
Es útil cuando realizo algunas refactorizaciones ... Tener que SABER, mediante pruebas, que los métodos que contienen mis clases me ayudan cuando tengo que transferir un método a otra clase por alguna razón: como para desvincular responsabilidades, etc. – HexaGridBrain
Discuto que nunca tendrá necesidad de esto cuando solo se asegure de que las dependencias sean burladas/tropezadas adecuadamente y tenga su API pública completamente cubierta. – Gordon