A testing utility for nest-commander. It builds on top of ideas from @nestjs/testing and is not tied to any test framework directly.
npm install nest-commander-testingSo you;'ve built a CLI application, but you want to test it, and you want to be able to do your
usual NestJS DI mocking. Well, here's your solution :fireworks:
Before you get started, you'll need to install a few packages. First and foremost, this one:nest-commander-testing (name pending). You'll also need to install @nestjs/testing as this
package makes use of them under the hood, but doesn't want to tie you down to a specific version,
yay peerDependencies!
``sh`
npm i nest-commander-testing @nestjs/testingOR
yarn add nest-commander-testing @nestjs/testingOR
pnpm i nest-commander-testing @nestjs/testing
So what's the use of writing a super awesome command line script if you can't test it super easily,
right? Fortunately, nest-commander has some utilities you can make use of that fits in perfectlyCommandFactory
with the NestJS ecosystem, it'll feel right at home to any Nestlings out there. Instead of using the for building the command in test mode, you can use CommandTestFactory and pass inTest.createTestingModule
your metadata, very similarly to how from @nestjs/testing works. InoverrideProvider
fact, it uses this package under the hood. You're also still able to chain on the compile()
methods before calling so you can swap out DI pieces right in the test.
A nice example of this can be seen in the basic.command.factory.spec.ts file.
If you are making use of the InquirerService, you can use CommandTestFactory.setAnswers methodprocess.stdin` or make use of any user input, allowing smooth testing in your CI pipelines. For an
and pass either a single answer or multiple answers depending on how many answers you need to mock.
In doing so, a mock inquirer service will act similarly to inquirer without needing to modify
example of this, please check the
pizza command integration test.