Closed
Description
Use case: An abstract class which implements member checking in the constructor.
Example:
class FeedAggregator {
constructor({feedName, feedType}) {
this.feedName = feedName;
this.feedType = feedType;
// Check for methods that must be implemented
if (this.getItems === undefined) {
throw new TypeError("Class must define a getItems method");
}
}
}
class BadAggregator extends FeedAggregator {
constructor({feedName, feedType}) {
super({feedName, feedType});
}
}
test("Expect FeedAggregator to throw error when subclass has no getItems method", t => {
t.throws(new BadAggregator({feedName: 'test', feedType: 'test'}), TypeError("Class must define a getItems method"))
});
Expected output:
1 passed
Actual output:
1 failed
1. Expect FeedAggregator to throw error when subclass has no getItems method
failed with "Class must define a getItems method"
BadAggregator.FeedAggregator (FeedAggregator.js:11:13)
new BadAggregator (FeedAggregator.js:16:7)
Test.fn (FeedAggregator.js:23:12)
Metadata
Metadata
Assignees
Labels
No labels