Si es necesario, puede modificar esta configuración.
El código de karma.conf.js contiene las siguientes variables:
testRecursivePath: localiza el código de prueba.
srcOriginalRecursivePath: localiza el código fuente de tu visual.
coverageFolder: determina dónde se va a crear el informe de cobertura.
El archivo de configuración incluye las siguientes propiedades:
singleRun: true: las pruebas se ejecutan en un sistema de integración continua (CI) o se pueden ejecutar una vez. Puede cambiar la configuración a false para depurar las pruebas. El marco Karma mantiene el explorador en ejecución para que pueda usar la consola para la depuración.
files: [...]: en esta matriz, puede especificar los archivos que se van a cargar en el explorador. Los archivos que se cargan suelen ser archivos de origen, casos de prueba y bibliotecas (como Jasmine o utilidades de prueba). Puede agregar más archivos según sea necesario.
preprocessors: en esta sección, configurará las acciones que se ejecutan antes de que se ejecuten las pruebas unitarias. Las acciones pueden precompilar TypeScript en JavaScript, preparar archivos de mapa de código fuente y generar un informe de cobertura de código. Puede deshabilitar coverage al depurar las pruebas. coverage genera más código para las pruebas de cobertura del código, lo que complica la depuración de las pruebas.
El método build crea una instancia del objeto visual. mainElement es un método de obtención que devuelve una instancia de un elemento raíz del modelo de objetos de documento (DOM) en tu visualización. El captador es opcional, pero facilita la escritura de la prueba unitaria.
Ya tiene una compilación de una instancia de su objeto visual. Vamos a escribir el caso de prueba. El caso de prueba de ejemplo comprueba los elementos SVG que se crean cuando tu visualización se muestra.
Creación de un archivo TypeScript para escribir casos de prueba
Agregue un archivo visualTest.ts para los casos de prueba mediante el código siguiente:
TypeScript
import powerbi from"powerbi-visuals-api";
import { BarChartBuilder } from"./visualBuilder";
import { SampleBarChartDataBuilder } from"./visualData";
importDataView = powerbi.DataView;
describe("BarChart", () => {
let visualBuilder: BarChartBuilder;
let dataView: DataView;
let defaultDataViewBuilder: SampleBarChartDataBuilder;
beforeEach(() => {
visualBuilder = new BarChartBuilder(500, 500);
defaultDataViewBuilder = new SampleBarChartDataBuilder();
dataView = defaultDataViewBuilder.getDataView();
});
it("root DOM element is created", () => {
visualBuilder.updateRenderTimeout(dataView, () => {
expect(document.body.contains(visualBuilder.mainElement)).toBeTruthy();
});
});
});
Se denominan varios métodos Jasmine:
describe: describe un caso de prueba. En el contexto del marco jasmine, describe a menudo describe un conjunto o grupo de especificaciones.
beforeEach: se llama antes de cada llamada del método it, que está definido por el método describe.
it: define una sola especificación. El método it debe contener uno o varios expectations.
expect: Crea una expectativa para una especificación. Una especificación tiene éxito si todas las expectativas se cumplen sin fallos.
toBeInDOM: uno de los métodos buscadores de coincidencias. Para obtener más información sobre los buscadores de coincidencias, vea Jasmine Namespace: matchers (Espacio de nombres de Jasmine: buscadores de coincidencias).
Para obtener más información sobre Jasmine, consulte la documentación del marco de Jasmine en la página.
Adición de datos estáticos para pruebas unitarias
Cree el archivo visualData.ts en la carpeta de prueba usando el siguiente código:
La clase SampleBarChartDataBuilder extiende TestDataViewBuilder e implementa el método abstracto getDataView.
Al colocar datos en cubos de campo de datos, Power BI genera un objeto de categoría dataview basado en los datos.
En las pruebas unitarias, no tiene acceso a las funciones principales de Power BI que normalmente se usan para reproducir los datos. pero debe asignar los datos estáticos al objeto dataview categórico. Usa la clase TestDataViewBuilder para mapear tus datos estáticos.
Para obtener más información sobre la asignación de vistas de datos, vea DataViewMappings.
En el método getDataView, llame al método createCategoricalDataViewBuilder con los datos.
En el archivo visual capabilities.json de sampleBarChart, tenemos objetos dataRoles y dataViewMapping.
La clase ValueType se define en el paquete powerbi-visuals-utils-typeutils.
Ahora puedes ejecutar la prueba unitaria.
Iniciar pruebas unitarias
Esta prueba comprueba que el elemento SVG raíz del objeto visual existe cuando se ejecuta el objeto visual. Para ejecutar la prueba unitaria, escriba el siguiente comando en la herramienta de línea de comandos:
Símbolo del sistema de Windows
npm run test
karma.js ejecuta el caso de prueba en el explorador Chrome.
Nota
Debe instalar Google Chrome localmente.
En la ventana de la línea de comandos, obtendrá la siguiente salida:
Símbolo del sistema de Windows
> karma start
Webpack bundling...
assets by status 8.31 KiB [compared for emit]
assets by path ../build/test/*.ts 1020 bytes
asset ../build/test/visualData.d.ts 512 bytes [compared for emit]
asset ../build/test/visualBuilder.d.ts 499 bytes [compared for emit]
asset ../build/test/visualTest.d.ts 11 bytes [compared for emit]
assets by path ../build/src/*.ts 6.67 KiB
asset ../build/src/barChart.d.ts 4.49 KiB [compared for emit]
asset ../build/src/barChartSettingsModel.d.ts 2.18 KiB [compared for emit]
asset visualTest.3941401795.js 662 bytes [compared for emit] (name: visualTest.3941401795) 1 related asset
assets by status 2.48 MiB [emitted]
asset commons.js 2.48 MiB [emitted] (name: commons) (id hint: commons) 1 related asset
asset runtime.js 6.48 KiB [emitted] (name: runtime) 1 related asset
Entrypoint visualTest.39414017952.48 MiB (2.34 MiB) = runtime.js 6.48 KiB commons.js 2.48 MiB visualTest.3941401795.js 662 bytes 3 auxiliary assets
webpack 5.97.0 compiled successfully in3847 ms
0412202411:01:19.255:INFO [karma-server]: Karma v6.4.4 server started at http://localhost:9876/
0412202411:01:19.257:INFO [launcher]: Launching browsers ChromeHeadless with concurrency unlimited
0412202411:01:19.277:INFO [launcher]: Starting browser ChromeHeadless
0412202411:01:20.634:INFO [Chrome Headless 131.0.0.0 (Windows 10)]: Connected on socket QYSj9NyHQ14QjFBoAAAB with id 9616879
Chrome Headless 131.0.0.0 (Windows 10): Executed 1 of 1 SUCCESS (0.016 secs / 0.025 secs)
TOTAL: 1 SUCCESSTOTAL: 1 SUCCESS
=============================== Coveragesummary ===============================
Statements : 66.07% ( 187/283 )
Branches : 34.88% ( 45/129 )
Functions : 52.85% ( 37/70 )
Lines : 65.83% ( 185/281 )
================================================================================
Para obtener más información sobre la cobertura de código actual, abra el archivo coverage/html-report/index.html.
En el ámbito del archivo, puede ver el código fuente. Las utilidades de coverage resaltan la fila en rojo si ciertas líneas de código no se ejecutan durante las pruebas unitarias.
Importante
La cobertura de código no implica que tenga una buena cobertura de funcionalidad del objeto visual. Una prueba unitaria simple proporciona más del 96 % de cobertura en src/barChart.ts.
Depuración
Para depurar las pruebas mediante la consola del explorador, cambie el valor de singleRun en el archivo karma.conf.ts a false. Esta configuración mantendrá el explorador en ejecución cuando se inicie el explorador después de ejecutar las pruebas.
En este módulo, aprenderá a usar Playwright para probar una aplicación web de ejemplo. Aprenderá a ejecutar pruebas, ver informes de pruebas y comprender la estructura de un proyecto de Playwright. También aprenderá a usar Visual Studio Code para ejecutar pruebas, depurar pruebas y registrar nuevas pruebas. Por último, aprenderá a crear un nuevo conjunto de pruebas y cómo refinar las pruebas.