chai-spies-decorators

Chai Spies + ES7 decorators

Usage no npm install needed!

<script type="module">
  import chaiSpiesDecorators from 'https://cdn.skypack.dev/chai-spies-decorators';
</script>

README

chai-spies-decorators

npm install chai-spies-decorators

Provides ES7 decorators interface for chai-spies, allowing to set execution contracts on class methods in a nice declarative way. Requires Mocha.

import 'chai-spies-decorators'

describe ('example', () => {

    it ('works', () => {

        const foo = new (class Foo {

            @will.have.been.called.with (42).once
            bar () { }

            @will.have.been.called.twice
            zap () { }
        })

        foo.bar (42)
        foo.zap (); foo.zap ()
    })

})

How it works

I've written an article on Medium explaining it: Wiring ES7 decorators to Chai Spies for declarative contracts on class methods: A metaprogramming case study.

Warning

It is not very well tested with asynchronous tests. Should work with Promises, but not with done callback (not implemented).