繁体   English   中英

如何在 Jest/Typescript 中重置 class

[英]How to reset a class in Jest/Typescript

有没有一种方法可以重置类,这样我就不需要为每个测试实例化它们? 现在我正在调用: const animalManager = new AnimalManager(); 对于每个测试

我试过这个:

beforeEach(() => {
  AnimalManager.mockClear();
});
but get the error: Property 'mockClear' does not exist on type 'typeof AnimalManager

我目前的测试:

describe("default subscription actions", ()=>{
  const tigerObserver= new TigerObserver();
  const fishObserver = new FishObserver();

  describe("subscribe", ()=>{
    const animalManager = new AnimalManager();
    animalManager.subscribe(tigerObserver)
    animalManager.subscribe(fishObserver)
    it(`adds new subscribers`, () => {
      expect(animalManager.subscribers.length).toEqual(2);
    });
  })
  describe("unsubscribe", ()=>{
    const animalManager = new AnimalManager();
    animalManager.subscribe(tigerObserver)
    animalManager.subscribe(fishObserver)
    it(`removes subscriber`, () => {
      expect(animalManager.subscribers.length).toEqual(1);
    });
});

动物 class:

interface Subject {
  subscribe(subscriber: Observer): void;
  unsubscribe(subscriber: Observer): void;
  notify(): void;
}

export default class AnimalManager implements Subject {

  public subscribers: Observer[] = [];

您可以将变量animalManager移到测试 scope 之外,并使用beforeEach回调实例化一个新的 AnimalManager。

describe("default subscription actions", ()=>{
  const tigerObserver= new TigerObserver();
  const fishObserver = new FishObserver();
  const animalManager;
  beforeEach(() => {
    // the animalManager will be reinstantiated before each test.
    animalManager = new AnimalManager();
  })

  describe("subscribe", ()=>{
    animalManager.subscribe(tigerObserver)
    animalManager.subscribe(fishObserver)
    it(`adds new subscribers`, () => {
      expect(animalManager.subscribers.length).toEqual(2);
    });
  })

  /** ... **/
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM