web-atoms-unit
TypeScript icon, indicating that this package has built-in type declarations

1.0.23 • Public • Published

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

    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();
    });
 
    // 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>
    <head>
        <script src="//cdn.jsdelivr.net/npm/web-atoms-unit@1.0.4/index.js"></script> 
    </head>
    <body>
        <script>
            // make sure all other scripts are loaded on the page
            // before calling this one...
            setTimeout(function(){
                WebAtoms.Unit.TestRunner.instance.run();
            },100);
        </script> 
    </body>
    </html>

Sample Test class

    /// <reference path="./node_modules/web-atoms-unit/index.d.ts">
 
    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<any>{
 
            // 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<any>{
 
            // catches exception on 
            // asynchronous result
 
            await Assert.throwsAsync('Division by zero',
                async ():Promise<any> =>{
                    await this.delay(100);
                    this.divide(1,0);
                }
            );
        }
 
    }
 

Package Sidebar

Install

npm i web-atoms-unit

Weekly Downloads

0

Version

1.0.23

License

MIT

Last publish

Collaborators

  • neurospeechowner
  • ackava
  • ajay_ns