node-red / node-red-node-test-helper

A test framework for Node-RED nodes
Apache License 2.0
57 stars 40 forks source link

Unexpected missing catch node #48

Closed FStefanni closed 3 years ago

FStefanni commented 3 years ago

Hi,

working on tests for a node of mine, I have discovered that I must explicitly load the catch node, with something like:

const catchNode = require("../../node_modules/@node-red/nodes/core/common/25-catch");
helper.load([catchNode, ...], ...);

This is quite unexpected, since "standard nodes" are supposed to be already available. But, even worse, we have to manually load a file, which is a node-red internal file. IMHO users should not even know about its existence: since it is a single internal file, it could be deleted/moved/renamed/etc., breaking third-party tests. So this seems to create a serious usability issue for node-red-node-test-helper by third-party tests.

The question:

Is this truly needed or am I missing something? Or maybe there is a better way? And what is your point of view on this usability issue?

Regards.

EDIT/PS

I have not checked other standard nodes, but the same considerations could apply also to them, if the same loading procedure is required

knolleary commented 3 years ago

Hi,

in the majority of cases, the tests we have just test the Node in isolation and doesn't depend on other nodes, core or otherwise. So this isn't something this module does much to help with currently.

That said, I can see are argument to be made to make it easier to include certain core nodes - like Status, Complete and Catch as they help test behaviours of the node beyond simple message passing in and out.

Will take a look at what the best way to include them is.

knolleary commented 3 years ago

I've just published 0.2.6 to npm that will automatically load the status, complete and catch nodes if they are needed and have not been provided in the call to helper.load().

FStefanni commented 3 years ago

Hi,

I confirm the change works great. Thank you for the improvement.

Regards.