Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Dieser Artikel unterstützt Sie bei der Installation, dem Import und der Verwendung der Testhilfsprogramme für Power BI-Visuals. Diese Testhilfsprogramme können für Komponententests verwendet werden. Zu den Programmen gehören Mocks und Methoden für Elemente wie Datenansichten, Auswahl und Farbschemas.
Voraussetzungen
Um dieses Paket zu verwenden, installieren Sie Folgendes:
- Node.js. Es wird empfohlen, die TLS-Version zu verwenden.
- npm (Version 3.0.0 oder höher).
- Das
PowerBI-visuals-tools
-Paket
Installation
Führen Sie den folgenden Befehl in Ihrem Verzeichnis mit Power BI-Visuals aus, um Testhilfsprogramme zu installieren und die dazugehörige Abhängigkeit Ihrer Datei package.json hinzuzufügen:
npm install powerbi-visuals-utils-testutils --save
Im Folgenden erhalten Sie Beschreibungen und Beispiele für die öffentliche API der Testhilfsprogramme.
VisualBuilderBase
Wird von VisualBuilder bei Komponententests mit den am häufigsten verwendeten Methoden build
, update
und updateRenderTimeout
verwendet.
Die build
-Methode gibt eine erstellte Instanz des Visuals zurück.
Die enumerateObjectInstances
- und updateEnumerateObjectInstancesRenderTimeout
-Methoden sind erforderlich, um Änderungen am Bucket und den Formatierungsoptionen zu überprüfen.
abstract class VisualBuilderBase<T extends IVisual> {
element: JQuery;
viewport: IViewport;
visualHost: IVisualHost;
protected visual: T;
constructor(width?: number, height?: number, guid?: string, element?: JQuery);
protected abstract build(options: VisualConstructorOptions): T;
nit(): void;
destroy(): void;
update(dataView: DataView[] | DataView): void;
updateRenderTimeout(dataViews: DataView[] | DataView, fn: Function, timeout?: number): number;
updateEnumerateObjectInstancesRenderTimeout(dataViews: DataView[] | DataView, options: EnumerateVisualObjectInstancesOptions, fn: (enumeration: VisualObjectInstance[]) => void, timeout?: number): number;
updateFlushAllD3Transitions(dataViews: DataView[] | DataView): void;
updateflushAllD3TransitionsRenderTimeout(dataViews: DataView[] | DataView, fn: Function, timeout?: number): number;
enumerateObjectInstances(options: EnumerateVisualObjectInstancesOptions): VisualObjectInstance[];
}
Hinweis
Weitere Beispiele finden Sie unter Erstellen von VisualBuilderBase-Komponententests und Reales Nutzungsszenario für VisualBuilderBase.
DataViewBuilder
Wird von TestDataViewBuilder verwendet. Dieses Modul stellt eine in der createCategoricalDataViewBuilder
-Methode verwendete CategoricalDataViewBuilder-Klasse bereit. Dort werden auch Schnittstellen und Methoden angegeben, die erforderlich sind, um mit simulierten DataView-Klassen in Komponententests arbeiten zu können.
withValues
fügt statische Datenreihenspalten hinzu, undwithGroupedValues
fügt dynamische Datenreihenspalten hinzu.Wenden Sie nicht dynamische Datenreihen und statische Datenreihen in DataViewCategorical eines Visuals an. Sie können beide nur in der DataViewCategorical-Abfrage verwenden, wobei erwartet wird, dass DataViewTransform sie in separate visuelle DataViewCategorical-Objekte aufteilt.
build
gibt das DataView-Objekt mit Metadaten sowie DataViewCategorical zurück.build
gibt Nicht definiert zurück, wenn die Kombination der Parameter nicht zulässig ist, z. B. wenn sowohl dynamische als auch statische Datenreihen bei der Erstellung der DataView-Klasse des Visuals eingeschlossen werden.
class CategoricalDataViewBuilder implements IDataViewBuilderCategorical {
withCategory(options: DataViewBuilderCategoryColumnOptions): IDataViewBuilderCategorical;
withCategories(categories: DataViewCategoryColumn[]): IDataViewBuilderCategorical;
withValues(options: DataViewBuilderValuesOptions): IDataViewBuilderCategorical;
withGroupedValues(options: DataViewBuilderGroupedValuesOptions): IDataViewBuilderCategorical;
build(): DataView;
}
function createCategoricalDataViewBuilder(): IDataViewBuilderCategorical;
TestDataViewBuilder
Wird für die Erstellung von VisualData bei Komponententests verwendet. Wenn Daten in Datenfeldbuckets platziert werden, generiert Power BI ein kategorisches DataView-Objekt basierend auf den Daten. TestDataViewBuilder unterstützt die Simulierung der Erstellung des kategorischen DataView-Objekts.
abstract class TestDataViewBuilder {
static DataViewName: string;
private aggregateFunction;
static setDefaultQueryName(source: DataViewMetadataColumn): DataViewMetadataColumn;
static getDataViewBuilderColumnIdentitySources(options: TestDataViewBuilderColumnOptions[] | TestDataViewBuilderColumnOptions): DataViewBuilderColumnIdentitySource[];
static getValuesTable(categories?: DataViewCategoryColumn[], values?: DataViewValueColumn[]): any[][];
static createDataViewBuilderColumnOptions(categoriesColumns: (TestDataViewBuilderCategoryColumnOptions | TestDataViewBuilderCategoryColumnOptions[])[], valuesColumns: (DataViewBuilderValuesColumnOptions | DataViewBuilderValuesColumnOptions[])[], filter?: (options: TestDataViewBuilderColumnOptions) => boolean, customizeColumns?: CustomizeColumnFn): DataViewBuilderAllColumnOptions;
static setUpDataViewBuilderColumnOptions(options: DataViewBuilderAllColumnOptions, aggregateFunction: (array: number[]) => number): DataViewBuilderAllColumnOptions;
static setUpDataView(dataView: DataView, options: DataViewBuilderAllColumnOptions): DataView;
protected createCategoricalDataViewBuilder(categoriesColumns: (TestDataViewBuilderCategoryColumnOptions | TestDataViewBuilderCategoryColumnOptions[])[], valuesColumns: (DataViewBuilderValuesColumnOptions | DataViewBuilderValuesColumnOptions[])[], columnNames: string[], customizeColumns?: CustomizeColumnFn): IDataViewBuilderCategorical;
abstract getDataView(columnNames?: string[]): DataView;
}
Im Folgenden finden Sie die am häufigsten verwendeten Schnittstellen bei der Erstellung von testDataView
:
interface TestDataViewBuilderColumnOptions extends DataViewBuilderColumnOptions {
values: any[];
}
interface TestDataViewBuilderCategoryColumnOptions extends TestDataViewBuilderColumnOptions {
objects?: DataViewObjects[];
isGroup?: boolean;
}
interface DataViewBuilderColumnOptions {
source: DataViewMetadataColumn;
}
interface DataViewBuilderSeriesData {
values: PrimitiveValue[];
highlights?: PrimitiveValue[];
/** Client-computed maximum value for a column. */
maxLocal?: any;
/** Client-computed maximum value for a column. */
minLocal?: any;
}
interface DataViewBuilderColumnIdentitySource {
fields: any[];
identities?: CustomVisualOpaqueIdentity[];
}
Hinweis
Weitere Beispiele finden Sie unter Erstellen von TestDataViewBuilder-Komponententests und Reales Nutzungsszenario für TestDataViewBuilder.
Mocks
MockIVisualHost
Implementiert IVisualHost, um Power BI-Visuals ohne externe Abhängigkeiten wie dem Power BI-Framework zu testen.
Zu den geeigneten Methoden gehören createSelectionIdBuilder
, createSelectionManager
und createLocalizationManager
sowie Getter für Eigenschaften.
import powerbi from "powerbi-visuals-api";
import VisualObjectInstancesToPersist = powerbi.VisualObjectInstancesToPersist;
import ISelectionIdBuilder = powerbi.visuals.ISelectionIdBuilder;
import ISelectionManager = powerbi.extensibility.ISelectionManager;
import IColorPalette = powerbi.extensibility.IColorPalette;
import IVisualEventService = powerbi.extensibility.IVisualEventService;
import ITooltipService = powerbi.extensibility.ITooltipService;
import IVisualHost = powerbi.extensibility.visual.IVisualHost;
class MockIVisualHost implements IVisualHost {
constructor(
colorPalette?: IColorPalette,
selectionManager?: ISelectionManager,
tooltipServiceInstance?: ITooltipService,
localeInstance?: MockILocale,
allowInteractionsInstance?: MockIAllowInteractions,
localizationManager?: powerbi.extensibility.ILocalizationManager,
telemetryService?: powerbi.extensibility.ITelemetryService,
authService?: powerbi.extensibility.IAuthenticationService,
storageService?: ILocalVisualStorageService,
eventService?: IVisualEventService);
createSelectionIdBuilder(): ISelectionIdBuilder;
createSelectionManager(): ISelectionManager;
createLocalizationManager(): ILocalizationManager;
colorPalette: IColorPalette;
locale: string;
telemetry: ITelemetryService;
tooltipService: ITooltipService;
allowInteractios: boolean;
storageService: ILocalVisualStorageService;
eventService: IVisualEventService;
persistProperties(changes: VisualObjectInstancesToPersist): void;
}
createVisualHost
erstellt eine Instanz von IVisualHost und gibt sie zurück, genau genommen MockIVisualHost.function createVisualHost(locale?: Object, allowInteractions?: boolean, colors?: IColorInfo[], isEnabled?: boolean, displayNames?: any, token?: string): IVisualHost;
Beispiel:
import { createVisualHost } from "powerbi-visuals-utils-testutils" let host: IVisualHost = createVisualHost();
Wichtig
Bei MockIVisualHost handelt es sich um eine Fakeimplementierung von IVisualHost. MockIVisualHost sollte nur mit Komponententests verwendet werden.
MockIColorPalette
Implementiert IColorPalette, um Power BI-Visuals ohne externe Abhängigkeiten wie dem Power BI-Framework zu testen.
MockIColorPalette stellt hilfreiche Eigenschaften für die Überprüfung des Farbschemas oder des Modus mit hohem Kontrast bei Komponententests bereit.
import powerbi from "powerbi-visuals-api";
import IColorPalette = powerbi.extensibility.ISandboxExtendedColorPalette;
import IColorInfo = powerbi.IColorInfo;
class MockIColorPalette implements IColorPalette {
constructor(colors?: IColorInfo[]);
getColor(key: string): IColorInfo;
reset(): IColorPalette;
isHighContrastMode: boolean;
foreground: {value: string};
foregroundLight: {value: string};
...
background: {value: string};
backgroundLight: {value: string};
...
shapeStroke: {value: string};
}
createColorPalette
erstellt eine Instanz von IColorPalette und gibt sie zurück, genau genommen MockIColorPalette.function createColorPalette(colors?: IColorInfo[]): IColorPalette;
Beispiel:
import { createColorPalette } from "powerbi-visuals-utils-testutils" let colorPalette: IColorPalette = createColorPalette();
Wichtig
Bei MockIColorPalette handelt es sich um eine Fakeimplementierung von IColorPalette. MockIColorPalette sollte nur mit Komponententests verwendet werden.
MockISelectionId
Implementiert ISelectionId, um Power BI-Visuals ohne externe Abhängigkeiten wie dem Power BI-Framework zu testen.
import powerbi from "powerbi-visuals-api";
import Selector = powerbi.data.Selector;
import ISelectionId = powerbi.visuals.ISelectionId;
class MockISelectionId implements ISelectionId {
constructor(key: string);
equals(other: ISelectionId): boolean;
includes(other: ISelectionId, ignoreHighlight?: boolean): boolean;
getKey(): string;
getSelector(): Selector;
getSelectorsByColumn(): Selector;
hasIdentity(): boolean;
}
createSelectionId
erstellt eine Instanz von ISelectionId und gibt sie zurück, genau genommen MockISelectionId.function createSelectionId(key?: string): ISelectionId;
Beispiel:
import { createColorPalette } from "powerbi-visuals-utils-testutils" let selectionId: ISelectionId = createSelectionId();
Hinweis
Bei MockISelectionId handelt es sich um eine Fakeimplementierung von ISelectionId. MockISelectionId sollte nur mit Komponententests verwendet werden.
MockISelectionIdBuilder
Implementiert ISelectionIdBuilder, um Power BI-Visuals ohne externe Abhängigkeiten wie dem Power BI-Framework zu testen.
import DataViewCategoryColumn = powerbi.DataViewCategoryColumn;
import DataViewValueColumn = powerbi.DataViewValueColumn;
import DataViewValueColumnGroup = powerbi.DataViewValueColumnGroup;
import DataViewValueColumns = powerbi.DataViewValueColumns;
import ISelectionIdBuilder = powerbi.visuals.ISelectionIdBuilder;
import ISelectionId = powerbi.visuals.ISelectionId;
class MockISelectionIdBuilder implements ISelectionIdBuilder {
withCategory(categoryColumn: DataViewCategoryColumn, index: number): this;
withSeries(seriesColumn: DataViewValueColumns, valueColumn: DataViewValueColumn | DataViewValueColumnGroup): this;
withMeasure(measureId: string): this;
createSelectionId(): ISelectionId;
withMatrixNode(matrixNode: DataViewMatrixNode, levels: DataViewHierarchyLevel[]): this;
withTable(table: DataViewTable, rowIndex: number): this;
}
createSelectionIdBuilder
erstellt eine Instanz von ISelectionIdBuilder und gibt sie zurück, genau genommen MockISelectionIdBuilder.function createSelectionIdBuilder(): ISelectionIdBuilder;
Beispiel:
import { selectionIdBuilder } from "powerbi-visuals-utils-testutils"; let selectionIdBuilder = createSelectionIdBuilder();
Hinweis
Bei MockISelectionIdBuilder handelt es sich um eine Fakeimplementierung von ISelectionIdBuilder. MockISelectionIdBuilder sollte nur mit Komponententests verwendet werden.
MockISelectionManager
Implementiert ISelectionManager, um Power BI-Visuals ohne externe Abhängigkeiten wie dem Power BI-Framework zu testen.
import powerbi from "powerbi-visuals-api";
import IPromise = powerbi.IPromise;
import ISelectionId = powerbi.visuals.ISelectionId;
import ISelectionManager = powerbi.extensibility.ISelectionManager;
class MockISelectionManager implements ISelectionManager {
select(selectionId: ISelectionId | ISelectionId[], multiSelect?: boolean): IPromise<ISelectionId[]>;
hasSelection(): boolean;
clear(): IPromise<{}>;
getSelectionIds(): ISelectionId[];
containsSelection(id: ISelectionId): boolean;
showContextMenu(selectionId: ISelectionId, position: IPoint): IPromise<{}>;
registerOnSelectCallback(callback: (ids: ISelectionId[]) => void): void;
simutateSelection(selections: ISelectionId[]): void;
}
createSelectionManager
erstellt eine Instanz von ISelectionManager und gibt sie zurück, genau genommen MockISelectionManager.function createSelectionManager(): ISelectionManager
Beispiel:
import { createSelectionManager } from "powerbi-visuals-utils-testutils"; let selectionManager: ISelectionManager = createSelectionManager();
Hinweis
Bei MockISelectionManager handelt es sich um eine Fakeimplementierung von ISelectionManager. MockISelectionManager sollte nur mit Komponententests verwendet werden.
MockILocale
Legt das Gebietsschema fest und ändert es entsprechend Ihrer Anforderungen während des Komponententestprozesses.
class MockILocale {
constructor(locales?: Object): void; // Default locales are en-US and ru-RU
locale(key: string): void;// setter property
locale(): string; // getter property
}
createLocale
erstellt eine Instanz von MockILocale und gibt sie zurück.funciton createLocale(locales?: Object): MockILocale;
MockITooltipService
Simuliert TooltipService
und führt entsprechend Ihrer Anforderungen während des Komponententestprozesses einen Aufruf dafür aus.
class MockITooltipService implements ITooltipService {
constructor(isEnabled: boolean = true);
enabled(): boolean;
show(options: TooltipShowOptions): void;
move(options: TooltipMoveOptions): void;
hide(options: TooltipHideOptions): void;
}
createTooltipService
erstellt eine Instanz von MockITooltipService und gibt sie zurück.function createTooltipService(isEnabled?: boolean): ITooltipService;
MockIAllowInteractions
export class MockIAllowInteractions {
constructor(public isEnabled?: boolean); // false by default
}
createAllowInteractions
erstellt eine Instanz von MockIAllowInteractions und gibt sie zurück.function createAllowInteractions(isEnabled?: boolean): MockIAllowInteractions;
MockILocalizationManager
Stellt grundlegende Funktionen von LocalizationManager bereit, die für Komponententests erforderlich sind.
class MockILocalizationManager implements ILocalizationManager {
constructor(displayNames: {[key: string]: string});
getDisplayName(key: string): string; // returns default or setted displayNames for localized elements
}
createLocalizationManager
erstellt eine Instanz von ILocalizationManager und gibt sie zurück, genau genommen MockILocalizationManager.function createLocalizationManager(displayNames?: any): ILocalizationManager;
Beispiel:
import { createLocalizationManager } from "powerbi-visuals-utils-testutils"; let localizationManagerMock: ILocalizationManager = createLocalizationManager();
MockITelemetryService
Simuliert die Verwendung von TelemetryService.
class MockITelemetryService implements ITelemetryService {
instanceId: string;
trace(veType: powerbi.VisualEventType, payload?: string) {
}
}
Erstellung von MockITelemetryService
typescript function createTelemetryService(): ITelemetryService;
MockIAuthenticationService
Simuliert die Arbeit von AuthenticationService, indem ein simuliertes Microsoft Entra-Token bereitgestellt wird.
class MockIAuthenticationService implements IAuthenticationService {
constructor(token: string);
getAADToken(visualId?: string): powerbi.IPromise<string>
}
createAuthenticationService
erstellt eine Instanz von IAuthenticationService und gibt sie zurück, genau genommen MockIAuthenticationService.function createAuthenticationService(token?: string): IAuthenticationService;
MockIStorageService
Ermöglicht Ihnen die Verwendung von ILocalVisualStorageService mit demselben Verhalten wie LocalStorage.
class MockIStorageService implements ILocalVisualStorageService {
get(key: string): IPromise<string>;
set(key: string, data: string): IPromise<number>;
remove(key: string): void;
}
createStorageService
erstellt eine Instanz von ILocalVisualStorageService und gibt sie zurück, genau genommen MockIStorageService.function createStorageService(): ILocalVisualStorageService;
MockIEventService
import powerbi from "powerbi-visuals-api";
import IVisualEventService = powerbi.extensibility.IVisualEventService;
import VisualUpdateOptions = powerbi.extensibility.VisualUpdateOptions;
class MockIEventService implements IVisualEventService {
renderingStarted(options: VisualUpdateOptions): void;
renderingFinished(options: VisualUpdateOptions): void;
renderingFailed(options: VisualUpdateOptions, reason?: string): void;
}
createEventService
erstellt eine Instanz von IVisualEventService und gibt sie zurück, genau genommen MockIEventService.function createEventService(): IVisualEventService;
Hilfsprogramme
Zu Hilfsprogrammen gehören Hilfsmethoden für Komponententests von Power BI-Visuals, einschließlich Hilfsprogrammen zu Farben, Zahlen und Ereignissen.
renderTimeout
gibt ein Timeout zurück.function renderTimeout(fn: Function, timeout: number = DefaultWaitForRender): number
testDom
unterstützt das Festlegen einer Fixierung bei Komponententests.function testDom(height: number | string, width: number | string): JQuery
Beispiel:
import { testDom } from "powerbi-visuals-utils-testutils"; describe("testDom", () => { it("should return an element", () => { let element: JQuery = testDom(500, 500); expect(element.get(0)).toBeDefined(); }); });
Hilfsmethoden zu Farben
getSolidColorStructuralObject
function getSolidColorStructuralObject(color: string): any
Gibt die folgende Struktur zurück:
{ solid: { color: color } }
assertColorsMatch
vergleicht RgbColor-Objekte, die aus Eingabezeichenfolgen geparst wurden.function assertColorsMatch(actual: string, expected: string, invert: boolean = false): boolean
parseColorString
parst Farben aus Eingabezeichenfolgen und gibt sie über die angegebene Schnittstelle RgbColor zurück.function parseColorString(color: string): RgbColor
Hilfsmethoden zu Zahlen
getRandomNumbers
generiert eine zufällige Zahl mithilfe von Minimal- und Maximalwerten. Sie könnenexceptionList
angeben und eine Funktion bereitstellen, damit sich das Ergebnis ändert.function getRandomNumber( min: number, max: number, exceptionList?: number[], changeResult: (value: any) => number = x => x): number
getRandomNumbers
stellt ein Array zufälliger Zahlen bereit, die von dergetRandomNumber
-Methode mit den angegebenen Minimal- und Maximalwerten generiert werden.function getRandomNumbers(count: number, min: number = 0, max: number = 1): number[]
Hilfsmethoden zu Ereignissen
Die folgenden Methoden werden für die Simulation von Webseitenereignissen bei Komponententests geschrieben.
clickElement
simuliert einen Klick auf das angegebene Element.function clickElement(element: JQuery, ctrlKey: boolean = false): void
createTouch
gibt ein Touch-Objekt zurück, um die Simulation eines Fingereingabeereignisses zu unterstützen.function createTouch(x: number, y: number, element: JQuery, id: number = 0): Touch
createTouchesList
gibt eine Liste simulierter Touch-Ereignisse zurück.function createTouchesList(touches: Touch[]): TouchList
createContextMenuEvent
gibt MouseEvent zurück.function createContextMenuEvent(x: number, y: number): MouseEvent
createMouseEvent
erstellt MouseEvent und gibt es zurück.function createMouseEvent( mouseEventType: MouseEventType, eventType: ClickEventType, x: number, y: number, button: number = 0): MouseEvent
createTouchEndEvent
function createTouchEndEvent(touchList?: TouchList): UIEvent
createTouchMoveEvent
function createTouchMoveEvent(touchList?: TouchList): UIEvent
createTouchStartEvent
function createTouchStartEvent(touchList?: TouchList): UIEvent
Hilfsmethoden zu D3-Ereignissen
Die folgenden Methoden werden verwendet, um D3-Ereignisse bei Komponententests zu simulieren.
flushAllD3Transitions
erzwingt, dass alle D3-Übergänge abgeschlossen werden.function flushAllD3Transitions()
Hinweis
Normalerweise werden verzögerungsfreie Übergänge nach einer sofortigen Verzögerung (<10 ms) ausgeführt, dies kann jedoch zu einem kurzen Flackern führen, wenn der Browser die Seite zweimal rendert. Einmal am Ende der ersten Ereignisschleife, ein zweites Mal sofort beim ersten Timerrückruf.
Dieses Flackern fällt im Internet Explorer sowie bei vielen Webansichten stärker auf, weshalb es für iOS vermieden werden sollte.
Indem die Timerwarteschlange am Ende der ersten Ereignisschleife geleert wird, können Sie Übergänge ohne Verzögerung sofort ausführen und das Flackern so verhindern.
Die folgenden Methoden sind hier ebenfalls relevant:
function d3Click(element: JQuery, x: number, y: number, eventType?: ClickEventType, button?: number): void
function d3MouseUp(element: JQuery, x: number, y: number, eventType?: ClickEventType, button?: number): void
function d3MouseDown(element: JQuery, x: number, y: number, eventType?: ClickEventType, button?: number): void
function d3MouseOver(element: JQuery, x: number, y: number, eventType?: ClickEventType, button?: number): void
function d3MouseMove(element: JQuery, x: number, y: number, eventType?: ClickEventType, button?: number): void
function d3MouseOut(element: JQuery, x: number, y: number, eventType?: ClickEventType, button?: number): void
function d3KeyEvent(element: JQuery, typeArg: string, keyArg: string, keyCode: number): void
function d3TouchStart(element: JQuery, touchList?: TouchList): void
function d3TouchMove(element: JQuery, touchList?: TouchList): void
function d3TouchEnd(element: JQuery, touchList?: TouchList): void
function d3ContextMenu(element: JQuery, x: number, y: number): void
Hilfsschnittstellen
Die folgende Schnittstelle und die folgenden Enumerationen werden in der Hilfsfunktion verwendet.
interface RgbColor {
R: number;
G: number;
B: number;
A?: number;
}
enum ClickEventType {
Default = 0,
CtrlKey = 1,
AltKey = 2,
ShiftKey = 4,
MetaKey = 8,
}
enum MouseEventType {
click,
mousedown,
mouseup,
mouseover,
mousemove,
mouseout,
}
Zugehöriger Inhalt
Informationen zum Schreiben von Komponententests für Webpack-basierte Power BI-Visuals und Unit-Tests mit karma
und jasmine
finden Sie unter Tutorial: Hinzufügen von Komponententests für visuelle Power BI-Projekte.