js-must icon indicating copy to clipboard operation
js-must copied to clipboard

export expect as alias of must to simplify imports

Open danyg opened this issue 6 years ago • 3 comments

Hi, love this library, much better and safer than chai.

I'm migrating some test done with mocha, chai and typescript, and just a silly request could you export expect as an alias of the function must?

See if you want to use expect on typescript this is what you need to do:

import must from 'must';
const expect = must;

If you try to do this:

import { must as expect } from 'must';

Typescript parser understands that you want to export the must property on the Object returned by require which is an instance of Must according to must.d.ts, in particular this:

    interface Object {
        must: Must;
    }

Other option would be to change expect to must in my tests, but it looks weird:

await must(testee.load()).must.reject.to.error(Error, 'message');
// must must === very must?

I know this intended to be used this way:

await testee.load().must.reject.to.error(Error, 'message');

But don't feel safe using this notation to be honest.

Cheers!

danyg avatar Mar 22 '18 11:03 danyg

Hey!

Hmm, I've not used Typescript myself, but that sure sounds weird. Doesn't it have a way rename the default export just like with plain CommonJS you can do var expect = require("must")?

I definitely want you to be able to rename the default export to expect if you prefer that over the prototype-extension approach.

moll avatar Mar 23 '18 18:03 moll

The only thing exported by Must is declare function must(expected: any): Must;

As it's exporting a single function you can import * as expect from 'must';

chrisgedrim avatar May 01 '18 06:05 chrisgedrim

Hey! Did @chrisgedrim recommendation fit your use case, @danyg?

moll avatar Nov 02 '20 12:11 moll