Package Exports
- k6-expect
- k6-expect/dist/index.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (k6-expect) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
k6-expect
k6 library that simplifies writing tests in functional way by providing a simple and jest-like syntax for expectations.
Usage
Get started
export default function () {
describe("Check", t => {
const r = http.get("https://jsonplaceholder.typicode.com/users/10");
// specialized and type-safe assertions
// ... for k6 http response
t.expect(response(r, x => x.ok(), x => x.validJson()))
// ... for primitives
.and("Id", num(r.json("id"), x => x.toEqual(10)))
.and("Name", str(r.json("name"), x => x.not().toBeEmpty()))
.and("Phone number", str(r.json("phone"), x => x.regex("\\d{3}-\\d{3}-\\d{4}")))
.and("Geolocation", num(r.json("address.geo.lat"), x => x.lessThan(0)))
.and("Company", str(r.json("company.name"), x => x.toContain("LLC")));
});
}Output:
█ User check
✓ https://jsonplaceholder.typicode.com/users/10 is 200
✓ https://jsonplaceholder.typicode.com/users/10 responded with valid json
✓ Id is 10
✓ Name is not empty
✓ Phone number matches '\d{3}-\d{3}-\d{4}' pattern
✓ Geolocation is less than 0
✓ Company contains 'LLC'For more information, check this examples.
Pass custom context
export class FooContext implements TestSuiteContext {
breakOnFirstAssert: boolean;
constructor() {
this.breakOnFirstAssert = true;
}
sanitizeUrl(url: string): string {
return "";
}
customFunction() { /* custom logic */ }
}
let fooContext = new FooContext();
export default function () {
describe("Check", t => {
// Test logic
// ...
// Access to custom logic
t.context!.customFunction();
}, fooContext);
}Typescript integration
Based on k6-template-typescript.
package.json:
{
"devDependencies": {
"k6-expect": "X.X.X"
}
}
webpack.config.js:
// ...
module.exports = {
// ...
externals: [
function ({context, request}, c) {
if (request.startsWith('k6') || request.startsWith('https://')) {
return request === 'k6-expect' ? c() : c(null, 'commonjs ' + request);
}
return c();
},
],
// ...
}Assertions table
| Access Function | Assertion | Supports negation | Description |
|---|---|---|---|
| that() | nil | ✓ | Check value for null or undefined |
| null | ✓ | Check value for null |
|
| toEqual | ✓ | Check value for equality | |
| bool() | toBeTruthy | ✗ | Check value for truth |
| toBeFalsy | ✗ | Check value for falsity | |
| collection() | toBeEmpty | ✓ | Check array for emptiness |
| length | ✓ | Check array for length | |
| toContain | ✓ | Check array for occurence of an item | |
| num() | zero | ✓ | Check value for zero |
| between | ✓ | Check value for a hit in the interval (inclusive) | |
| greaterThan | ✓ | Check that value is greater | |
| greaterThanOrEqual | ✓ | Check that value is greater or equal | |
| lessThan | ✓ | Check that value is less | |
| lessThanOrEqual | ✓ | Check that value is less or equal | |
| str() | toBeEmpty | ✓ | Check value for emptiness |
| regex | ✓ | Check that value matches the pattern | |
| toContain | ✓ | Check value for occurence of a string | |
| response() | validJson | ✓ | Check that response contains valid json |
| success | ✓ | Check that response has successful status (200-299) | |
| status | ✓ | Check that response has status specified | |
| ok | ✓ | Check response for 200 OK |
|
| accepted | ✓ | Check response for 202 ACCEPTED |
|
| noContent | ✓ | Check response for 204 NO CONTENT |
|
| badRequest | ✓ | Check response for 400 BAD REQUEST |
|
| unauthorized | ✓ | Check response for 401 UNAUTHORIZED |
|
| forbidden | ✓ | Check response for 403 FORBIDDEN |
|
| notFound | ✓ | Check response for 404 NOT FOUND |
|
| length | ✓ | Check response body length |
LICENSE
Distributed under the MIT License. See LICENSE for more information.