Manzambi / Manzambi_Antonio_CC2223

Repositorio de La asignatura de Cloud Computing
Apache License 2.0
0 stars 0 forks source link

Necesitamos elegir una biblioteca de aserciones #12

Closed Manzambi closed 1 year ago

Manzambi commented 1 year ago

Descripción

De cara a la implementación del módulo de tests de la aplicación, se necesita elegir una biblioteca de aserciones adecuada.

Para tal hemos escojido Jasmine a continuacion iremos hablar un poco de ella. # #13

Manzambi commented 1 year ago

Jasmine

Jasmine es un marco de prueba de desarrollo basado en el comportamiento para JavaScript. No se basa en navegadores, DOM ni en ningún marco de JavaScript. Por lo tanto, es adecuado para sitios web, proyectos de Node.js o cualquier lugar donde se pueda ejecutar JavaScript.

Estructura de directorios

/srccontiene todos los archivos fuente /src/core- archivos fuente genéricos /src/html- archivos específicos del navegador /src/boot- fuentes para archivos de arranque (ver más abajo) /speccontiene todas las pruebas refleja el directorio de origen hay algunos archivos adicionales /libcontiene la copia compilada de Jasmine. Esto se usa para autoevaluarse y se distribuye como los jasmine-corepaquetes Node y Ruby. autodiagnóstico Jasmine se prueba a sí misma. Los archivos en libse cargan primero, definiendo la referencia jasmine. Luego srcse cargan los archivos en, definiendo la referencia jasmineUnderTest. Entonces hay dos copias del código cargado bajo prueba.

Las pruebas siempre deben usarse jasmineUnderTestpara referirse a los objetos y funciones que se están probando. Pero las pruebas pueden usar funciones jasminesegún sea necesario. Tenga cuidado con la forma en que estructura cualquier nuevo código de prueba . Copie los patrones que ve en el código existente; esto garantiza que el código que está probando no se filtre en la jasminereferencia y viceversa.

boot0.jsyboot1.js Estos archivos hacen toda la configuración necesaria para que Jasmine funcione en un navegador. Cargan todo el código, crean un Envcorreo electrónico, adjuntan las funciones globales y construyen el reportero. También configura la ejecución de Env- para los navegadores en los que se encuentra window.onload. Si bien el valor predeterminado lib es apropiado para navegadores, es posible que los proyectos deseen personalizar este archivo.

Compatibilidad Jasmine se ejecuta tanto en Node como en una variedad de navegadores. Consulte el LÉAME para ver la lista de entornos admitidos actualmente.

Desarrollo

Todo el código fuente pertenece a src/. El core/directorio contiene la mayor parte de la funcionalidad de Jasmine. Este código debe permanecer independiente del navegador y del entorno. Si su característica o solución no puede ser, como se mencionó anteriormente, degradar correctamente. Cualquier código que dependa de un navegador (específicamente, espera windowser el global o documentestá presente) debe vivir en src/html/.

Instalar dependencias de desarrollo

Jasmine Core se basa en Node.js.

Para instalar las dependencias de Node, necesitará Node.js y npm.

$ npm install ...instalará todos los módulos de nodo localmente. ahora corre

$ npm test ...debería ver la ejecución de pruebas y el formateo de verificación de eslint.

Cómo escribir un nuevo código Jasmine O, Cómo hacer una solicitud de extracción exitosa

No cambie la interfaz pública . Muchos proyectos dependen de Jasmine y si no tienes cuidado los romperás. Sea agnóstico del medio ambiente . Algunas personas ejecutan sus especificaciones en navegadores, otras en Node. Jasmine debería apoyarlos a todos tanto como sea posible. Sea independiente del navegador : si debe confiar en la funcionalidad específica del navegador, escríbalo de una manera que se degrade con gracia. Escribir especificaciones : Jasmine es un marco de prueba. No agregue funcionalidad sin probarla. Escriba el código con el estilo del resto del repositorio : Jasmine debe verse como un todo cohesivo. Asegúrese de que todo el conjunto de pruebas sea verde en todos los grandes navegadores, Node y ESLint/Prettier. Tu contribución no debería afectar a Jasmine para otros usuarios. Siga estos consejos y es mucho más probable que su solicitud de extracción, parche o sugerencia se integre.

Especificaciones de funcionamiento Asegúrese de ejecutar las pruebas en al menos una versión de Nodo compatible y al menos un par de navegadores compatibles. Para ejecutar las pruebas en Node, simplemente use npm test como se describe arriba. Para ejecutar las pruebas en un navegador, ejecute npm run servey luego visite http://localhost:8888.

Si tiene instalados los controladores de Selenium necesarios (por ejemplo, geckodriver o chromedriver), también puede usar las herramientas de CI de Jasmine:

$ JASMINE_BROWSER= npm run ci Envío de una solicitud de extracción Una vez que haya realizado los pasos enumerados en "Antes de enviar una solicitud de extracción" arriba, puede enviar una solicitud de extracción a través del proceso estándar de GitHub . TL; DR: Bifurque el repositorio, empuje su trabajo hasta su bifurcación y cree un PR desde allí.

Manzambi commented 1 year ago

Configuración

Personalice spec/support/jasmine.jsonpara enumerar los archivos de origen y los archivos de especificaciones que le gustaría que incluyera el ejecutor de Jasmine. Puede usar cadenas globales dir.

                      {
            // Spec directory path relative to the current working dir when jasmine is executed.
            "spec_dir": "spec",

            // Array of filepaths (and globs) relative to spec_dir to include and exclude
            "spec_files": [
              "**/*[sS]pec.?(m)js",
              "!**/*nospec.js"
            ],

            // Array of filepaths (and globs) relative to spec_dir to include before jasmine specs
            "helpers": [
              "helpers/**/*.?(m)js"
            ],

            // Configuration of the Jasmine environment
            // "env" is optional, as are all of its properties.
            "env": {
              // Whether to fail a spec that ran no expectations
              "failSpecWithNoExpectations": false,

              // Stop execution of a spec after the first expectation failure in it
              "stopSpecOnExpectationFailure": false,

              // Stop execution of the suite after the first spec failure  
              "stopOnSpecFailure": false,

              // Run specs in semi-random order
              "random": false
            }
          }

generalmente cuando usamos angular podemos hacer parte de su configuracion dentro del fichero karma.config.js

Manzambi commented 1 year ago

13 Biblioteca de aserciones jasmine de la component product-pizza

      import { ComponentFixture, TestBed } from '@angular/core/testing';

        import { ProductPizzaComponent } from './product-pizza.component';

        describe('ProductPizzaComponent', () => {
          let component: ProductPizzaComponent;
          let fixture: ComponentFixture<ProductPizzaComponent>;

          beforeEach(async () => {
            await TestBed.configureTestingModule({
              declarations: [ ProductPizzaComponent ]
            })
            .compileComponents();
          });

          beforeEach(() => {
            fixture = TestBed.createComponent(ProductPizzaComponent);
            component = fixture.componentInstance;
            fixture.detectChanges();
          });

          it('verificacando si mi componente existe', () => {
            expect(component).toBeTruthy();
          });

          it('Por defeito la pizza normal es de queso', () => {
            expect(component.sabor).toBe("Queso");
          });

          it('El tamaño de la piza es de 10cm', () => {
            expect(component.taman).toEqual("10 cm");
          });

          it('El Precio de la pizza es 3.80€', () => {
            expect(component.Precio+"").toEqual("3.8");
          });

        });