Is there a way to create a jasmine unit test for an abstract component?
doing
const fixture = TestBed.createComponent(MyAbstractComponent);
You can create a simple class in your test file which extends from abstract class (do not forget to mock abstract methods), than just test its non abstract methods. Let's say we have MyAbstractClass
:
export abstract class MyAbstractClass {
sum(a: number, b: number): number {
return a + b;
}
abstract calc1(): void;
abstract calc2(): void;
}
and then in spec file we can just create a new derived class:
class MyClass extends MyAbstractClass {
// just mock any abstract method
calc1(): void {
return;
}
calc2(): void {
return;
}
}
So now we can write tests for non-abstract methods:
describe('MyAbstractClass', () => {
let myClass: MyClass;
beforeEach(() => {
myClass = new MyClass();
});
it('sum two args', () => {
const a = 1, b = 2;
const sum = myClass.sum(a, b);
expect(sum).toBe(3);
});
});
Also created a stackblitz example of this test example.