An open API service indexing awesome lists of open source software.

https://github.com/neurospeech/web-atoms-unit

Simple Unit testing framework for web atoms
https://github.com/neurospeech/web-atoms-unit

javascript typescript unit-testing web-atoms

Last synced: 3 months ago
JSON representation

Simple Unit testing framework for web atoms

Awesome Lists containing this project

README

          

# Web Atoms Unit Testing

Simple Unit testing framework for web atoms.

## Dependencies

typescript

Please make sure, decorator support is enabled for your tests.

## Installation

npm install web-atoms-unit

## Running with Node

Create a `run-tests.js` file

```javascript
var fs = require("fs");
var vm = require("vm");

function loadScript(file){
var s = fs.readFileSync(file,'utf-8');
var script = new vm.Script(s, { filename: file });
script.runInThisContext();
}

// load web atoms mock
loadScript("./node_modules/web-atoms-unit/web-atoms-mock.js");

// load web atoms mvvm
loadScript("./node_modules/web-atoms-mvvm/dist/web-atoms-mvvm.js");

// load web atoms unit
loadScript("./node_modules/web-atoms-unit/index.js");

// load your tests..
// ideally all typescript files should be transpiled into
// one js file
loadScript("./tests/generated-test.js");

// .. so on.. you can write a script to load many files....

var p = WebAtoms.Unit.TestRunner.instance.run(process.argv[2]);

p.then(function(){
process.exit();
});

p.catch(function(error){
console.error(error);
process.abort();
});

```

```node
// run all tests
node run-tests.js

// run tests by filtering categories provided by comma separated categories
node run-tests.js categories,categories

// run tests by filtering categories provided by regular expressions
node run-tests.js /regex/i
```

## Running with browser

```html






// make sure all other scripts are loaded on the page
// before calling this one...
setTimeout(function(){
WebAtoms.Unit.TestRunner.instance.run();
},100);



```

## Sample Test class

```typescript
///

var Category = WebAtoms.Unit.Category;
var Test = WebAtoms.Unit.Test;
var Assert = WebAtoms.Unit.Assert;
var TestItem = WebAtoms.Unit.TestItem;

@Category("Math-Test")
class SampleTest extends TestItem{


@Test("Add")
add():void{
Assert.equals(4, 2 + 2);
Assert.doesNotEqual(5, 2 + 2);
}

divide(a:number,b:number):number{
if(b==0){
throw new Error("Division by zero");
}
return a/b;
}

@Test("Divide by zero")
divideByZero():void{
Assert.throws('Division by zero', ()=>{
this.divide(1,0);
});
}

// async...
@Test("Async test")
async asyncTest():Promise{

// this.delay(100) is inbuilt
// function, you can use any
// promise to await
await this.delay(100);

Assert.equals(2,2);
}

@Test("Async throws")
async asyncThrows():Promise{

// catches exception on
// asynchronous result

await Assert.throwsAsync('Division by zero',
async ():Promise =>{
await this.delay(100);
this.divide(1,0);
}
);
}

}

```