Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[WIP] Add unit tests to project #780

Open
wants to merge 5 commits into
base: master
Choose a base branch
from
Open

Conversation

curtisy1
Copy link

@curtisy1 curtisy1 commented Jan 6, 2019

This is a work in progress proposed fix to #19. I'll gradually add more tests but the foundation is there for now. As a quick overview of what I decided on using and how this all works, here's a small writeup:

The testing framework used is Intern. This allows using chai asserts which are easier to read in my opinion. As well as a close to zero configuration setup which lets us focus on writing tests instead of configuring things that aren't really necessary.

Furthermore, because we can't use electron or node_modules directly. We rely on testdouble which allows us to mock external dependencies by either:

  1. stubbing the whole module with td.replace and then replacing single functions with td.when().then()
  2. mocking objects in code and patching out single modules yourself. This is needed because electron itself relies on node modules and can't be stubbed easily. That's why object replacement is necessary.

We will use Intern as a testing framework because it seamlessly
integrates with chai for running tests, as well as vast testing
capabilities and onboard TypeScript support.

The sample.js contains a simple test that should integrate with TravisCI
and will be deleted when tests are implemented.
Whoops, I forgot to add the object descriptor..
This completes the basic setup and makes it possible to:
- run tests using the intern testrunner (npm test)
- mock dependencies using testdouble
Note: Electron can't be mocked by td itself, so providing a manual mock
is needed. This should be modularized in the future.
@ifedapoolarewaju
Copy link
Collaborator

Hi, I just wanted to say thank you for your work on this! Is this good for me to do a full review yet, or are you still working on it? I have taken a glance, but not a thorough review.

@curtisy1
Copy link
Author

You can take a review if you want. The basic setup is complete, so all that's left to add are the actual tests. A review on the structure or syntax you prefer would actually help me out a lot as well since I can keep it in line with the rest of the project.

@ifedapoolarewaju
Copy link
Collaborator

Hi @curtisy1 wanted to check in on the status of this PR? :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants