The types in context testing.
npm install @zoroaster/types
@zoroaster/types is the types in context testing.
``sh`
yarn add -D @zoroaster/types
- Table Of Contents
- API
- Context
* _contextTesting.ContextConstructor
* _contextTesting.Context
* Context Example
- Test Suite & Test
* _contextTesting.TestSuite
* _contextTesting.Test
- Copyright
The package can enable _VSCode_ types highlighting by importing its types via the @typedef:
`js`
/**
* @suppress {nonStandardJsDocs}
* @typedef {import('@zoroaster/types').Test} _contextTesting.ContextConstructor
* @typedef {import('@zoroaster/types').TestSuite} _contextTesting.TestSuite
* @typedef {import('@zoroaster/types').ContextConstructor} _contextTesting.ContextConstructor
* @typedef {import('@zoroaster/types').Context} _contextTesting.Context
*/
The types and externs for _Google Closure Compiler_ via _Depack_ are defined in the _contextTesting namespace.
The context is the property on test suites which contains either an object, or Context Constructors -- classes used to create a new context for tests.
function(new: _contextTesting.Context) ___contextTesting.ContextConstructor__: The constructor class of a context.
___contextTesting.Context__: The context made with a constructor.
| Name | Type | Description |
| -------- | --------------------------------------- | ---------------------------------------------------------- |
| _init | function(): (!Promise \| void) | The function to initialise the context before each test. |
| _destroy | function(): (!Promise \| void) | The function to destroy the context after its test is run. |
The context is used to put all service methods for test cases into a single class, and access them via tests' arguments.
| Context | Spec |
|---|---|
` const LOG = debuglog('@zoroaster/types') const FIXTURE = 'test/fixture' /** | ` /* @type {Object. export default T |
_@Zoroaster/types_ package also provides interfaces for the test and test suite types. They are useful to establish communication between the @zoroaster/reducer library and zoroaster binary so that they both support the same properties and the compiler can check them correctly.
`js`
// zoroaster
/**
* A test suite is a collection of tests with any number of contexts.
* @implements {_contextTesting.TestSuite}
*/
export default class TestSuite {
/ ... /
/**
* Whether test suite has focused tests.
*/
get hasFocused(){
// this.names is a nested collection of inner test and test suite names.
return this.names.some(n => n.startsWith('!'))
}
get isFocused() {
return this.name.startsWith('!')
}
}
`js`
// @zoroaster/reducer
/**
* Run all tests in sequence, one by one.
* This also runs only selected tests, e.g., !test and !test suite
* @param {!Array} tests An array with tests.
* @param {_contextTesting.ReducerConfig} config The options for the reducer.
*/
const reducer = async (tests, config) => {
await tests.reduce(async (acc, test) => {
const {
name, isFocused, fn, hasFocused, // accessing the interface API
} = test
const isTest = !!fn
if (allCanRun || isFocused || hasFocused) {
/ ... /
}
}
}
___contextTesting.TestSuite__: The test suite interface.
| Name | Type | Description |
| --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------- |
| __name*__ | string | The name of the test suite. |
| __isFocused*__ | boolean | If the test suite is focused. |
| __hasFocused*__ | boolean | Whether the test suite has focused tests. |
| __tests*__ | !Array<!(_contextTesting.Test \| _contextTesting.TestSuite)> | Whether the test suite has focused tests. |
___contextTesting.Test__: The test interface required for the reducer.
| Name | Type | Description |
| -------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------- |
| __name*__ | string | The name of the test. |
| __fn*__ | function(..._contextTesting.Context): (!Promise \| void) | The test function to run. |
| __isFocused*__ | boolean | If the name of the test has !`. |
(c) Context Testing 2019