簡體   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