Ecosyste.ms: Awesome

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

Awesome Lists | Featured Topics | Projects

https://github.com/fluffynuts/expect-even-more-jest

expect-more-jest with even more stuff
https://github.com/fluffynuts/expect-even-more-jest

Last synced: 5 days ago
JSON representation

expect-more-jest with even more stuff

Awesome Lists containing this project

README

        

# expect-even-more-jest
![Test](https://github.com/fluffynuts/expect-even-more-jest/workflows/Tests/badge.svg)

![npm](https://img.shields.io/npm/v/expect-even-more-jest)

## What is it?

It's [expect-more-jest](https://www.npmjs.com/package/expect-more-jest) with _even more_ stuff!

## Why?

Because [expect-more-jest](https://www.npmjs.com/package/expect-more-jest) has most of the things
I need, but is missing a few, which I'm not entirely sure would be accepted upstream. This way, I
present one package with all the tastiness of
[expect-more-jest](https://www.npmjs.com/package/expect-more-jest) _as well as_ all the useful
things that _I_ like!

## Ok, so what's in the tin?

First, check out what [expect-more-jest supplies](https://www.npmjs.com/package/expect-more-jest#-matchers)
Cool, huh?

Now, in addition to that, I've added:

```typescript
describe(`expect-even-more-jest', () => {
it(`makes your tests and output easier to read as well!`, async () => {
// values
expect(SomeClass).toBeConstructor();
expect(new SomeClass()).toBeA(SomeClass);
// syntactic sugar: better flowing
expect(new ExcitedThing()).toBeAn(ExcitedThing);
// test that a value is not null or undefined
expect(someValue).toExist();
// tests matching properties on two objects
expect({ foo: 1, bar: 2 })
.toIntersectionEqual({ foo: 1, quux: 2 });

// mocks & spies
expect(spyOrMock).toHaveBeenCalledOnce();
expect(spyOrMock).toHaveBeenCalledOnceWith("hello", "world");

// promises
// - completed promises have resolved _or_ rejected
await expect(Promise.resolve()).toBeCompleted();
await expect(Promise.reject()).toBeCompleted();

// test that a promise resolves within a timeframe (defaults to 50 ms)
await expect(Promise.resolve()).toBeResolved("should have resolved", 5000);
// test that a promise rejects within a timeframe (defaults to 50 ms)
await expect(Promise.reject()).toBeRejected("should have rejected", 123);
expect(new Promise(() => {})).toBePromiseLike();

// file system
expect(pathToFile).toBeFile();
expect(pathToFolder).toBeFolder();

// collections
expect([1, 2, 3 ]).toBeEquivalentTo([ 2, 1, 3]);
expect({ foo: 1 }).toHaveKey("foo");
expect({ foo: 1, bar: 2 }).toHaveKeys("foo", "bar");
expect([ 1, 2, 3 ]).toAllMatch(i => i < 4);
// performs deep partial equality testing on elements of an array to find
// the search object, using jasmine.objectContaining (so you don't need
// to match _all_ properties!
expect(arrayOfObjects).toContainElementLike(search);
});
});
```