Jasmine Unit Test Abstract class

后端 未结 2 794
旧时难觅i
旧时难觅i 2021-02-07 17:20

Is there a way to create a jasmine unit test for an abstract component?

doing

const fixture = TestBed.createComponent(MyAbstractComponent);
2条回答
  •  梦谈多话
    2021-02-07 18:14

    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.

提交回复
热议问题