ts-spec-bootstrapper
v0.2.1
Published
Bootstraps missing tests in TypeScript projects
Downloads
5
Readme
TS Spec Bootstrapper
Bootstraps tests for all test-able functions in a TypeScript project. Running this script...
- generates new
.spec.ts
files for according.ts
files, if they contain test-able functions - adds new tests to according
.spec.ts
files for functionality in.ts
files, that is un-tested - adds seperate tests for all possible branches through a function. Deeply nested conditional statements will be considered
Installation
- Add package to your project
npm i --save-dev ts-spec-bootstrapper
- Add script to your
package.json
"ts-spec-bootstrapper": "ts-spec-bootstrapper --root='src/app/'"
Naming convention requirements
File naming
The name of a .ts
file has to be matched with an according .spec.ts
file.
Example:
tab-item.component.ts
tab-item.component.spec.ts
If the according .spec.ts
does not exist, but the .ts
contains test-able logic, a .spec.ts
will be created automatically.
Test naming
The name of a test-able function has to be matched in a describe()
block of the according .spec.ts
file.
Example:
function closeAllTabItems() { /* ... */ }
describe('closeAllTabItems', () => { /* ... */ })
If the according describe()
block does not exist, it will be created automatically. The function name in the describe()
block can put in single-quotes, double-quotes, or template-strings. Additionally, the matching will work for fdescribe()
or xdescribe()
blocks.
Parameters
|Name|Type|Description|Default|
|----|----|-----------|-------|
|root
|string|The root directory from where you want to have tests recursively generated.|./
|
|verbose
|boolean|Will output internal information of TS Spec Bootstrapper which might not be relevant to you.|false
|
|test-private
|boolean|Will additionally generate tests for private methods.|false
|
|test-protected
|boolean|Will additionally generate tests for protected methods.|false
|
|it-content
|string|Defines the string that will be rendered in each xit()
block. Can be multi-line seperated by \n
.|// ...
|
Features
Test bootstrapping is supported for...
- Global functions
- Arrow functions
- Public member functions
- Protected member functions
- Private member functions
- Class property arrow functions
- Branches: then
- Branches: else
- Branches: else If
- Branches: implicit else
- (Deeply) nested branches
Upcoming changes will add support for...
- Branch generation for switch statments
- Branch generation for ternary operator (AST kindName ConditionalExpression)
Example
Given TypeScript file:
// file: legal-stuff.ts
function isUserAllowedToBuyAlcohol(user: User): boolean {
if (user.age >= LEGAL_DRINKING_AGE) {
return true;
} else {
return false;
}
}
Generated test output:
// file: legal-stuff.spec.ts (automatically generated)
describe(`isUserAllowedToBuyAlcohol`, () => {
describe(`when (user.age >= LEGAL_DRINKING_AGE)`, () => {
xit(`should be implemented`, () => {
// ...
});
});
describe(`when (!(user.age >= LEGAL_DRINKING_AGE))`, () => {
xit(`should be implemented`, () => {
// ...
});
});
});