Skip to content

Commit 55d45b6

Browse files
authored
Merge pull request #46 from mrubli/doc/issue-45
Document how to avoid assertions causing test timeout (issue #45)
2 parents 0a663e1 + 942b1f6 commit 55d45b6

File tree

2 files changed

+33
-11
lines changed

2 files changed

+33
-11
lines changed

README.md

+15-5
Original file line numberDiff line numberDiff line change
@@ -73,8 +73,12 @@ describe('lower-case Node', function () {
7373
var flow = [{ id: "n1", type: "lower-case", name: "lower-case" }];
7474
helper.load(lowerNode, flow, function () {
7575
var n1 = helper.getNode("n1");
76-
n1.should.have.property('name', 'lower-case');
77-
done();
76+
try {
77+
n1.should.have.property('name', 'lower-case');
78+
done();
79+
} catch(err) {
80+
done(err);
81+
}
7882
});
7983
});
8084

@@ -87,8 +91,12 @@ describe('lower-case Node', function () {
8791
var n2 = helper.getNode("n2");
8892
var n1 = helper.getNode("n1");
8993
n2.on("input", function (msg) {
90-
msg.should.have.property('payload', 'uppercase');
91-
done();
94+
try {
95+
msg.should.have.property('payload', 'uppercase');
96+
done();
97+
} catch(err) {
98+
done(err);
99+
}
92100
});
93101
n1.receive({ payload: "UpperCase" });
94102
});
@@ -100,9 +108,11 @@ In this example, we require `should` for assertions, this helper module, as well
100108

101109
We then have a set of mocha unit tests. These tests check that the node loads correctly, and ensures it makes the payload string lower case as expected.
102110

111+
Note how the assertion failures are caught explicitly and passed to the `done()` call. Node-RED swallows exceptions that are raised in the flow, so we make sure the test framework is aware of them. Not doing so would simply lead to a test timeout because `done()` is never called in case of an assertion failure.
112+
103113
## Initializing Helper
104114

105-
To get started, we need to tell the helper where to find the node-red runtime. this is done by calling `helper.init(require.resolve('node-red'))` as shown.
115+
To get started, we need to tell the helper where to find the node-red runtime. This is done by calling `helper.init(require.resolve('node-red'))` as shown.
106116

107117
The helper takes an optional `userSettings` parameter which is merged with the runtime defaults.
108118

examples/lower-case_spec.js

+18-6
Original file line numberDiff line numberDiff line change
@@ -13,17 +13,25 @@ describe('lower-case Node', function () {
1313
var flow = [{ id: "n1", type: "lower-case", name: "lower-case" }];
1414
helper.load(lowerNode, flow, function () {
1515
var n1 = helper.getNode("n1");
16-
n1.should.have.property('name', 'lower-case');
17-
done();
16+
try {
17+
n1.should.have.property('name', 'lower-case');
18+
done();
19+
} catch(err) {
20+
done(err);
21+
}
1822
});
1923
});
2024

2125
it('should be loaded in exported flow', function (done) {
2226
var flow = [{"id":"3912a37a.c3818c","type":"lower-case","z":"e316ac4b.c85a2","name":"lower-case","x":240,"y":320,"wires":[[]]}];
2327
helper.load(lowerNode, flow, function () {
2428
var n1 = helper.getNode("3912a37a.c3818c");
25-
n1.should.have.property('name', 'lower-case');
26-
done();
29+
try {
30+
n1.should.have.property('name', 'lower-case');
31+
done();
32+
} catch(err) {
33+
done(err);
34+
}
2735
});
2836
});
2937

@@ -36,8 +44,12 @@ describe('lower-case Node', function () {
3644
var n2 = helper.getNode("n2");
3745
var n1 = helper.getNode("n1");
3846
n2.on("input", function (msg) {
39-
msg.should.have.property('payload', 'uppercase');
40-
done();
47+
try {
48+
msg.should.have.property('payload', 'uppercase');
49+
done();
50+
} catch(err) {
51+
done(err);
52+
}
4153
});
4254
n1.receive({ payload: "UpperCase" });
4355
});

0 commit comments

Comments
 (0)