Closed maxime1992 closed 6 years ago
Karma is usually used for running frontend tests. You can use Jasmine with ts-node. Nest uses Mocha with ts-node and nyc for testing with test coverage. I personally use Jest. If you are not familiar with any of these, just mimic the testing setup used in Nest.
Yeah I understood that yesterday before going to bed :sweat_smile: ...
Every setup I had to do before Angular-Cli I've been using Karma and for backend I never had to set tests up so I didn't realized...
I also made it working with the following npm scripts:
"back:test": "ts-node node_modules/jasmine/bin/jasmine ./backend/**/*spec.ts",
"back:test:watch": "watch 'yarn run back:test' backend",
There are probably better ways but at least I've got something working for now.
Thanks for the description I'll look into code coverage soon :+1:
I agree there is a missing step in the testing documentation, if you following along with the docs doing the Cats examples you will get an error saying "cannot find name 'describe'" on the tests. It'd be really great if the demo project had a basic test in it so that the package.json file is in a good state.
The starter projects, as well as the project generated through CLI, have a base testing configuration provided out-of-the-box now.
You guys wouldn't be opposed to someone writing a test or two for each of these right? https://github.com/nestjs/nest/tree/master/sample
The current coverage is fairly low
Yep I just wrote a test with Jest on a project I've started yesterday with the CLI, it's perfect @kamilmysliwiec :smile:
One little thing, I'm not sure if it's because I've made a monorepo front/back or not, but VSC is going mad saying that describe
, it
, beforeAll
, etc cannot be found.
Probably need some TS declarations...
I can confirm starting a new project generated with the latest version of the @nest/cli
, inside the generated app.controller.spec
:
[ts] Cannot find name 'describe'.
[ts] Cannot find name 'beforeAll'.
[ts] Cannot find name 'it'.
[ts] Cannot find name 'expect'.
Even though they seem to be declared in @types/jest
https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/jest/index.d.ts
It seems like it was just a problem with visual studio code. I had the project open at a higher directory level than where the tsconfig.json
file was. I had to open vscode at the root of the cli generated project, that way, the exclude
arrays takes effect:
"exclude": [
"node_modules",
"**/*.spec.ts"
]
Weird, as according to https://github.com/Microsoft/TypeScript/issues/10283 vscode should walk up the directory tree to find the nearest relevant tsconfig.json
file
I opened an issue in vscode https://github.com/Microsoft/vscode/issues/50910
Not a vscode issue, adding
import 'jest';
to the top of the test file solved the red lines issue even when I didn't have the project open at the root. Maybe this should be fixed in the schematics for the cli? @kamilmysliwiec
@CoreyCole are you experiencing issues with a project created from the CLI? Personally, I have never had to import jest
at the top of my files. You might be missing a dependency. Try npm i -D @types/jest
and let me know if that helps.
I actually like this solution more:
**/*.spec.ts
from tsconfig.json
tsconfig.json
after compilerOptions
"typeAcquisition": {
"include": [
"jest"
]
}
@patrickhousley yes it's problems with projects created with the CLI in subdirectories, you can see my reproduction here https://github.com/CoreyCole/tsconfig-bug
And repro gifv here
Adding the typeAcquisition
property to my tsconfig fixed the problem, though
I have never seen that configuration option. What is that?? Is that only for vscode?
I cannot find documentation for it, but here it is in Typescript source https://github.com/Microsoft/TypeScript/blob/master/lib/typescript.d.ts#L2464
Yeah it's an open issue that the feature is not documented https://github.com/Microsoft/TypeScript/issues/19369
This thread has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.
I'm submitting a...
Current behavior
The testing documentation is great but there's no setup part and and the starters probably don't want to enforce any testing framework, we have to do that setup ourselves, which is pretty hard for angular-cli user :sweat_smile: (focus on writing code, not setting things up)
A bit of help would be veeeeery welcome for that and I'm guessing that I'm not the only one who want that kind of setup so maybe there should be some section in doc how to make a basic setup for testing a Nest project (at least with Typescript support).
So I'm creating a starter NestJs for the back, Angular for the front: https://github.com/maxime1992/nest-angular-starter
I used karma-typescript and made a setup. It ended up with some errors related to my karma conf, which has now been solved.
The only last error is directly related to Nest and/or Express I think. When I launch the tests I end up with:
And I can also have this more complete stacktrace:
Expected behavior
I'd just love to be able to kickstart a Nest app and focus on code/tests. If anybody could help me make that works, then maybe we could also start a dedicated documentation section for that kind of setup?
Minimal reproduction of the problem with instructions
You can find more information where I started this issue here: https://github.com/monounity/karma-typescript/issues/32#issuecomment-370177855
I also have a repo where you can try it on your own:
What is the motivation / use case for changing the behavior?
Focus on code/tests, not tooling
Environment