Skip to content

Commit d33488a

Browse files
committed
Test for calling postMessage before worker is initialized.
1 parent d9eee18 commit d33488a

File tree

2 files changed

+12
-5
lines changed

2 files changed

+12
-5
lines changed

src/index.js

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,6 @@ class WebWorker extends React.Component {
1616
}
1717
}
1818

19-
uninitialized = () => {
20-
throw new Error("Worker not initialized")
21-
}
22-
2319
onMessage = message => {
2420
if (!this.mounted) return
2521
const data = this.props.parser ? this.props.parser(message.data) : message.data
@@ -41,7 +37,8 @@ class WebWorker extends React.Component {
4137

4238
postMessage = data => {
4339
const { serializer = x => x } = this.props
44-
const { postMessage = this.uninitialized } = this.worker || {}
40+
const { postMessage } = this.worker || {}
41+
if (!postMessage) throw new Error("Worker not initialized")
4542
this.setState({ lastPostAt: new Date() }, () => postMessage.call(this.worker, serializer(data)))
4643
}
4744

src/spec.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,16 @@ test("postMessage sends messages to the worker", async () => {
9797
expect(worker.postMessage).toHaveBeenCalledWith("hello")
9898
})
9999

100+
test("calling postMessage before having setup a worker will throw", async () => {
101+
render(
102+
<WebWorker>
103+
{({ postMessage }) => {
104+
expect(() => postMessage("hello")).toThrow(new Error("Worker not initialized"))
105+
}}
106+
</WebWorker>
107+
)
108+
})
109+
100110
test("serializer will prepare messages before sending them to the worker", async () => {
101111
worker.postMessage.mockClear()
102112
const { getByText } = render(

0 commit comments

Comments
 (0)