# Node unittests pass with strange warning

**URL:** https://discourse.nodered.org/t/node-unittests-pass-with-strange-warning/75162
**Category:** Developing Nodes
**Tags:** node-red-node-test-helper
**Created:** [14 February 2023 08:26 UTC](https://discourse.nodered.org/t/node-unittests-pass-with-strange-warning/75162 "2023-02-14T08:26:26Z")
**Posts on this page:** 3
**Page:** 1

<div class="post-metadata">

### Author: ![kakyoism](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/kakyoism/32/46283_2.png) [@kakyoism](https://discourse.nodered.org/u/kakyoism)
#### Post date: [14 February 2023 08:26 UTC](https://discourse.nodered.org/t/node-unittests-pass-with-strange-warning/75162/1 "2023-02-14T08:26:26Z")

</div>

I understand that this may be more or less a mixture of JEST and NR issue.  
But I just hope someone may shed some light on it.

## Setup

OS: macOS

JEST version:

```sh
$ jest --version
29.4.2

```

## Goal

```sh
npm install -g node-red
npm install -g node-red-node-test-helper

```

I'm testing Node-RED by wrapping its `node-red-node-test-helper` companion package, with which I write a wrapper class to use the helper internally:

```js
class FlowTester {
	constructor() {
		
		this.helper = require(Path.resolve(`${globalNodeModuleDir}/node-red-node-test-helper`));
	}

	init() {
		this.helper.init(require(Path.resolve(`${globalNodeModuleDir}/node-red`)));
	}

	defineDefaultFixtureForEach() {
		beforeEach((done) => {
			this.helper.startServer(done);
		});

		afterEach((done) => {
			this.helper.unload().then(() => {
				this.helper.stopServer(done);
			});
		});
	}

...

```

Here to clarify, due to architecture decisions, we found that `node-red-node-test-helper` cannot be installed as a local dependency inside the wrapper's package, but have to be installed globally instead. So we use absolaute path to require it.

Then in my individual node (think of it as a NodeJS package) `package.json`

```json

{

...
 "scripts": {
        "test": "jest"
 },
...

}

```

Finally I run the test:

```sh
cd my_node
npm test

```

## Problem

Although my JEST tests all pass, but a warning pops up:

```sh
console.log
16:03:44 TypeError: moduleName.startsWith is not a function
16:03:44 at Resolver.isCoreModule (/usr/local/lib/node_modules/jest/node_modules/jest-resolve/build/resolver.js:452:20)
16:03:44 at Resolver._getModuleType (/usr/local/lib/node_modules/jest/node_modules/jest-resolve/build/resolver.js:576:17)
16:03:44 at Resolver.getModuleID (/usr/local/lib/node_modules/jest/node_modules/jest-resolve/build/resolver.js:529:29)
16:03:44 at Runtime._shouldMockCjs (/usr/local/lib/node_modules/jest/node_modules/jest-runtime/build/index.js:1815:37)
16:03:44 at Runtime.requireModuleOrMock (/usr/local/lib/node_modules/jest/node_modules/jest-runtime/build/index.js:1145:16)
16:03:44 at NodeTestHelper._initRuntime (/usr/local/lib/node_modules/node-red-node-test-helper/index.js:89:37)
16:03:44 at NodeTestHelper.init (/usr/local/lib/node_modules/node-red-node-test-helper/index.js:148:18)
16:03:44 at FlowTester.init (/Users/me/_util/node/_flowtest.js:18:15)
16:03:44 at Object.init (/Users/me/my_service/node/test/default/flow.test.js:16:9)
16:03:44 at Runtime._execModule (/usr/local/lib/node_modules/jest/node_modules/jest-runtime/build/index.js:1539:24)
16:03:44 at Runtime._loadModule (/usr/local/lib/node_modules/jest/node_modules/jest-runtime/build/index.js:1122:12)
16:03:44 at Runtime.requireModule (/usr/local/lib/node_modules/jest/node_modules/jest-runtime/build/index.js:982:12)
16:03:44 at jestAdapter (/usr/local/lib/node_modules/jest/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:77:13)
16:03:44 at processTicksAndRejections (internal/process/task_queues.js:95:5)
16:03:44 at runTestInternal (/usr/local/lib/node_modules/jest/node_modules/jest-runner/build/runTest.js:367:16)
16:03:44 at runTest (/usr/local/lib/node_modules/jest/node_modules/jest-runner/build/runTest.js:444:34)
16:03:44   
16:03:44 at NodeTestHelper._initRuntime (../../../../../../../../usr/local/lib/n

```

## Analysis

The error looks like a type error to me. But the "mock" keyword among the callstack is suspicious because I haven't called any mocking API.

## Question

A casual internet search didn't get me anywhere close.  
I have no clue how a simple wrapper can cause this.  
Is it the way I require the global package that's wrong?

---

<div class="post-metadata">

### Author: ![kakyoism](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/kakyoism/32/46283_2.png) [@kakyoism](https://discourse.nodered.org/u/kakyoism)
#### Post date: [16 February 2023 03:51 UTC](https://discourse.nodered.org/t/node-unittests-pass-with-strange-warning/75162/2 "2023-02-16T03:51:53Z")

</div>

Finally solved this.  
The problem is that I misused require when importing `node-red` module.  
The warning is gone after I changed this line

```plaintext
this.helper.init(require(Path.resolve(`${globalNodeModuleDir}/node-red`)));

```

to

```plaintext
this.helper.init(require.resolve(Path.resolve(`${globalNodeModuleDir}/node-red`)));

```

Basically I must use require.resolve() when importing node-red here.

---

<div class="post-metadata">

### Author: ![system](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/1X/d073cd938eafa2e558d7c2cd59003b3ef4963033.png) [@system](https://discourse.nodered.org/u/system)
#### Post date: [2 March 2023 03:52 UTC](https://discourse.nodered.org/t/node-unittests-pass-with-strange-warning/75162/3 "2023-03-02T03:52:20Z")

</div>

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.
