TypeScript-Unterstützung für k6
xk6-ts macht TypeScript zu einem erstklassigen Bürger in k6.
k6 run script.ts
import { User , newUser } from "./user" ;
export default ( ) => {
const user : User = newUser ( "John" ) ;
console . log ( user ) ;
} ;
interface User {
name : string ;
id : number ;
}
class UserAccount implements User {
name : string ;
id : number ;
constructor ( name : string ) {
this . name = name ;
this . id = Math . floor ( Math . random ( ) * Number . MAX_SAFE_INTEGER ) ;
}
}
function newUser ( name : string ) : User {
return new UserAccount ( name ) ;
}
export { User , newUser } ;
Das ist es. Ein in TypeScript geschriebener Test kann direkt mit k6 ausgeführt werden. Node.js, Babel, Webpack, Bundler, Build-Schritt usw. sind nicht erforderlich.
Glauben Sie, dass moderne JavaScript-Funktionen TypeScript sinnlos machen? xk6-ts kann auch zur Unterstützung moderner JavaScript-Funktionen in k6 verwendet werden.
k6 run script.js
import { newUser } from "./user" ;
export default ( ) => {
const user = newUser ( "John" ) ;
console . log ( user ) ;
} ;
xk6-ts kann deaktiviert werden, indem die Umgebungsvariable XK6_TS
auf false
gesetzt wird.
Um sicherzustellen, dass Laufzeitfehlermeldungen die korrekte Quellcodeposition melden, ist die Quellkartengenerierung standardmäßig aktiviert. Andernfalls ist die Position des Quellcodes aufgrund der Transpilierung und Bündelung bedeutungslos. Die Quellkartengenerierung kann deaktiviert werden, indem der Wert der Umgebungsvariablen XK6_TS_SOURCEMAP
auf false
gesetzt wird.
Unterstützung der TypeScript-Sprache
k6 run script.ts
Remote-Unterstützung (https) für TypeScript/JavaScript-Module
import { User } from 'https://example.com/user.ts'
console . log ( new User ( ) )
Importieren von JSON-Dateien als JavaScript-Objekt
import object from './example.json'
console . log ( object )
Importieren von Textdateien als JavaScript-String
import string from './example.txt'
console . log ( string )
Kombinieren Sie JavaScript und TypeScript
Sie können vorgefertigte k6-Binärdateien von der Seite „Releases“ herunterladen. Auf der Seite „Pakete“ finden Sie vorgefertigte k6-Docker-Images.
Mit dem xk6-Build-Tool kann ein k6 erstellt werden, das die Erweiterung xk6-faker enthält:
$ xk6 build --with github.com/szkiba/xk6-ts@latest
Weitere Build-Optionen und die Verwendung von xk6 finden Sie in der xk6-Dokumentation.
Unter der Haube nutzt xk6-ts die esbuild-Bibliothek zum Transpilieren und Bündeln. Genauer gesagt verwendet xk6-ts die k6pack-Bibliothek, die auf esbuild basiert.
Vor dem Testlauf erfolgt die Transpilierung und Bündelung im laufenden Betrieb.
xk6-ts ist derzeit in k6 integriert, indem die Ausführung des k6 run
Befehls geändert wird. Dies ist eine vorübergehende Lösung, die endgültige Integration wird auf andere Weise erfolgen. Bei dieser temporären Integration wird davon ausgegangen, dass das letzte Argument der k6 run
-Befehlszeile der Name der Skriptdatei ist. Das heißt, im Gegensatz zur ursprünglichen Funktionsweise der k6 run
Ausführungsbefehlszeile akzeptiert xk6-ts keine Flags nach dem Namen der Skriptdatei. Diese Annahme ist übrigens nicht ungewöhnlich, viele andere Befehle akzeptieren nur Flags vor Positionsargumenten. (Der ursprüngliche k6 run
Befehl akzeptiert auch Flags nach dem Positionsargument).
Wenn Sie die Umgebungsvariable XK6_TS_BENCHMARK
auf true
setzen, wird die für die TypeScript/JavaScript-Bündelung aufgewendete Zeit protokolliert. Zu dieser Zeit gehört auch das Herunterladen eventueller Remote-Module.