Karma error - Unknown provider: $$asyncCallbackProvider - unit-testing

Trying to run my karma test through grunt but getting an error:
Error: [$injector:modulerr] Failed to instantiate module ngMock due to:
Error: [$injector:unpr] Unknown provider: $$asyncCallbackProvider
I removed 'ngAnimate' but does not resolve it. How can I run the grunt karma test without this error?

I had the same problem just now, and fixed it by making sure the version of my angular-mock dependancy was the same as that angular.
You can do this in your bower.json file (change "angular-mocks": "~1.3.0" to "angular-mocks": "^1.3.0" or a specific version).

While I have no doubt that 3sdmx's answer would work, I just ran an NPM update and that worked. Thought I should mention that so that people aren't maintaining their .json files so closely.

You should add all the angular dependencies that you used in your project to your karma.conf.js file.
It seems like you need to add ngMock to your karma file, like the example below :
files: [
'*/**/angula-ngMock.js'
],

Related

Nestjs Test Unit

Im try to test unit in Nestjs
But its showing error
Test suite failed to run
Cannot find module '#nestjs/core/inspector/graph-inspector' from '../node_modules/#nestjs/testing/testing-module.builder.js'
Require stack:
/Volumes/My Files/IdeaProjects/ChecklistApp/server/node_modules/#nestjs/testing/testing-module.builder.js
/Volumes/My Files/IdeaProjects/ChecklistApp/server/node_modules/#nestjs/testing/test.js
/Volumes/My Files/IdeaProjects/ChecklistApp/server/node_modules/#nestjs/testing/index.js
task/task.spec.ts
I have same problem with you, and i solved it. This problem is occurred because "#nestjs/core/inspector/graph-inspector" is missing but still referenced in "../node_modules/#nestjs/testing/testing-module.builder.js".
To solve this problem do following command:
npm i #nestjs/core && npm i #nestjs/testing
Note: above command will update the version of #nestjs/core and #nestjs/testing package to the latest version.

Looking for documentation setup jest for unit test of admin plugin

my project was created with the swdc create-project ...
Is there a documentation, a tutorial or description for the right setup/configuration unit testing with JEST for custom plugin in administration?
This tutorial describes only how to write a test
But i think there must be a official setup documentation because of versions etc.
EDIT: a tutorial with code is now avialable
Using the suggested solution and execute the test, throws an configuration error:
● Test suite failed to run
Configuration error:
Could not locate module src/core/factory/module.factory mapped as:
undefined/src$1.
Please check your configuration for these entries:
{
"moduleNameMapper": {
"/^src(.*)$/": "undefined/src$1"
},
"resolver": undefined
}
...
Cause of error:
process.env.ADMIN_PATH not setted but required in %Project%/custom/plugins/%MyPlugin%/src/Resources/app/administration/node_modules/#shopware-ag/jest-preset-sw6-admin/jest-preset.js
My solution:
set process.env.ADMIN_PATH in %Project%/custom/plugins/%MyPlugin%/src/Resources/app/administration/jest.config.js
// jest.config.js
...
const { join, resolve } = require('path');
process.env.ADMIN_PATH = resolve('../../../../../../../src/Administration/Resources/app/administration');
...
I think it is easiest to just copy and adapt from a plugin that already has jest tests set up. Look at the administration directory for SwagPayPal for example. Copy the dependency and script sections from their package.json. Also copy the entire jest.config.js. Then within the administration directory of your plugin you should be able to npm install followed by npm run unit or npm run unit-watch and it should find *.spec.js files within the test sub-directory.

ng build --prod - Error: Property body expected type of array but got null

I recently made a new branch in my angular project and am working on in for a bit. Now I wanted to build it for testing on smartphones. When using ng build --prod, I get the following error (ng build works tho!)
An unhandled exception occurred:
/Users/r/Documents/.../project/main-es2015.23a6f948094203a25f4a.js:
Property body expected type of array but got null See
"/private/var/folders/c5/y_n4tj316sq9x1nqx20qdlh40000gp/T/ng-FBFvv4/angular-errors.log"
for further details.
The angular-errors.log is not helpfull at all:
[error] TypeError:
/Users/r/Documents/.../project/main-es2015.23a6f948094203a25f4a.js:
Property body expected type of array but got null
at validate (/Users/r/Documents/.../project/node_modules/#babel/types/lib/definitions/utils.js:160:13)
at Object.validate (/Users/r/Documents/.../project/node_modules/#babel/types/lib/definitions/utils.js:229:7)
at validateField (/Users/r/Documents/.../project/node_modules/#babel/types/lib/validators/validate.js:24:9)
at Object.validate (/Users/r/Documents/.../project/node_modules/#babel/types/lib/validators/validate.js:17:3)
at NodePath._replaceWith (/Users/r/Documents/.../project/node_modules/#babel/traverse/lib/path/replacement.js:172:7)
at NodePath._remove (/Users/r/Documents/.../project/node_modules/#babel/traverse/lib/path/removal.js:57:10)
at NodePath.remove (/Users/r/Documents/.../project/node_modules/#babel/traverse/lib/path/removal.js:36:8)
at PluginPass.ForOfStatement (/Users/r/Documents/.../project/node_modules/#babel/plugin-transform-for-of/lib/index.js:206:16)
at newFn (/Users/r/Documents/.../project/node_modules/#babel/traverse/lib/visitors.js:175:21)
at NodePath._call (/Users/r/Documents/.../project/node_modules/#babel/traverse/lib/path/context.js:55:20)
at NodePath.call (/Users/r/Documents/.../project/node_modules/#babel/traverse/lib/path/context.js:42:17)
at NodePath.visit (/Users/r/Documents/.../project/node_modules/#babel/traverse/lib/path/context.js:92:31)
at TraversalContext.visitQueue (/Users/r/Documents/.../project/node_modules/#babel/traverse/lib/context.js:116:16)
at TraversalContext.visitSingle (/Users/r/Documents/.../project/node_modules/#babel/traverse/lib/context.js:88:19)
at TraversalContext.visit (/Users/r/Documents/.../project/node_modules/#babel/traverse/lib/context.js:144:19)
at Function.traverse.node (/Users/r/Documents/.../project/node_modules/#babel/traverse/lib/index.js:82:17)
Production Environment.prod.ts looks like this:
export const environment = {
production: true,
VERSION: require('../../package.json').version
};
I tried using the --source-map=true flag, but it is canceling building before its able to write the sourcemap.
I didnt put hands on my package.json since two month, but also tried deleting the node_modules and reinstall them.
I also tried changing rxjs and typescript versions, but no success
Im using angular -v 10.1.6, typescript -v 4.0.3, rxjs -v 6.4.5
What can I do??
Any help appreaciated!
I found a solution here https://github.com/angular/angular-cli/issues/16998.
My problem was using Labels. It appears that babel is having a bug with that.

Vue CLI plugin to add Jest test runner doesn't transpile .js files

Just a quick disclaimer, I cannot reproduce this on another project, which is why I'm here instead of making an issue on the Github.
Issue
So a quick demo project I made to show a co-worker how to use the Vue test utils, went off the wagon. It doesn't get picked up in the transform part of the jest.config.js.
I made the project with the Vue CLI, using vue create demo-project choosing ESlint and Babel, then running vue add #vue/cli-plugin-unit-jest. Everything went fine, I committed, ran the test command and everything went fine.
So we started testing snapshots, and everything was fine. Next day, come back to the project to keep going, and this is the error I get.
> vue-jest#0.1.0 test:unit .../demo-projects/vue-jest
> vue-cli-service test:unit
FAIL tests/unit/example.spec.js
● Test suite failed to run
Jest encountered an unexpected token
This usually means that you are trying to import a file which Jest cannot parse, e.g. it's not plain JavaScript.
By default, if Jest sees a Babel config, it will use that to transform your files, ignoring "node_modules".
Here's what you can do:
• To have some of your "node_modules" files transformed, you can specify a custom "transformIgnorePatterns" in your config.
• If you need a custom transformation specify a "transform" option in your config.
• If you simply want to mock your non-JS modules (e.g. binary assets) you can stub them out with the "moduleNameMapper" config option.
You'll find more details and examples of these config options in the docs:
https://jestjs.io/docs/en/configuration.html
Details:
.../demo-projects/vue-jest/tests/unit/example.spec.js:1
({"Object.<anonymous>":function(module,exports,require,__dirname,__filename,global,jest){import { shallowMount } from '#vue/test-utils';
^
SyntaxError: Unexpected token {
at ScriptTransformer._transformAndBuildScript (node_modules/jest-runtime/build/script_transformer.js:403:17)
Test Suites: 1 failed, 1 total
Tests: 0 total
Snapshots: 0 total
Time: 1.163s
Ran all test suites.
npm ERR! code ELIFECYCLE
npm ERR! errno 1
Just running the normal npm run test:unit results in the example.spec.js that comes with the test utils is not babel'ed, and fails in the Node test environment.
Attempted Solutions
Did not work
Deleting node_modules and reinstalling
Deleting package-lock.json, in addition to the above step ( separately done )
Reverting back to the commit when it was working
Checking out to a different branch, deleting all the files that vue add #vue/cli-plugin-unit-jest added, then running the command again to re-create all the files
jest.config.js
tests/ - and all it's files
Worked
Pretty clear what's happening, so in the jest.config.js file, I added the .js file under the transform field.
transform: {
'^.+\\.vue$': 'vue-jest',
'.+\\.(css|styl|less|sass|scss|svg|png|jpg|ttf|woff|woff2)$': 'jest-transform-stub',
'^.+\\.(js|jsx)?$': 'babel-jest' // added .js
},
This solution solves the problem, and properly transforms the example.spec.js
Attempted Recreation
I tried to see if this was a bug by creating another project, running the same steps and it worked just fine. I even copied and pasted all the files from the broken one to the new one, looking for differences in git. It was exactly the same. Which is why I thought it might be node_modules, but it still didn't work.
Uhh
Hopefully this isn't a waste of time for anyone reading since it's not truly a problem. I mainly wanted to have it for anyone who might have the same issue to see that adding the .js extension would solve the problem without having to start over, but also curious if anyone has insight on why this might be happening?

Angular build error in core/src/render3/interfaces

While building an Angular 6 app i get a compile error in #angular/core/src/render3/interfaces on line 35. The line is:
[ACTIVE_INDEX]: number | null;
and the error is:
error TS1169: A computed property name in an interface must directly refer to a built-in symbol.
I an using #angular/core#6.1.6. Am I doing something wrong or is this an Angular bug?
Verify that Visual Studio is targeting the correct version of Typescript (as seen in your package.json), then try deleting your node_modules folder, and rerunning npm install.
I believe that this is caused by running Angular 6 with an earlier, incompatible version of typescript (<2.7), because it looks like the ability used by the container.d.ts file (referenced in your error) to use Constant-Named Properties was added in Typescript 2.7. Of course, if it were that simple then ng serve would tell you about the Typescript incompatibility, so I assume that I'm either wrong, or that your environment is playing tricks on you.
See here for a related question.