Jestjs 检查函数是否在开玩笑时触发

Jestjs 检查函数是否在开玩笑时触发,jestjs,Jestjs,我有一个类,它在构造函数中启动并启动一个设置函数,如下所示: import { myFunction } from './util'; export class MyClass { constructor() { myFuction() } } 在这个函数中,我有: export function myFunction() { window.fruit = 'apple'; } 我想开玩笑地测试myFunction函数是否被激发,window.fruit是否具有Appl

我有一个类,它在构造函数中启动并启动一个设置函数,如下所示:

import { myFunction } from './util';

export class MyClass {
  constructor() {
    myFuction()
  }
}
在这个函数中,我有:

export function myFunction() {
  window.fruit = 'apple';
}
我想开玩笑地测试myFunction函数是否被激发,window.fruit是否具有Apple的属性

import MyClass from '../index';
import { myFunction } from '../util';

describe('myclass', () => {
  const mocks = {
    myFunction: jest.fn()
  }

  const meinclass = new MyClass();

  describe('#constructor', () => {
    it('should initialize the class', () => {
      expect(meinclass).not.toBeUndefined()
    })

    it('should call myfunction', () => {
      const init = jest.spyOn(myFunction);
      const fruit = window.fruit

      expect(init).toHaveBeenCalled()
      expect(fruit).toBe('apple')
    })
  })

})

我不确定正确的测试方法?我也尝试过使用.mock的方法开玩笑,但我似乎很难让它发挥作用。每当我记录窗口时,我都看不到窗口上的属性水果。我觉得这个谜题我遗漏了更大的一部分。对于这个简单的问题,我深表歉意。

我认为这两种测试都没有意义,函数被调用了,window.fruit被正确设置了。因此,与其使用窗口,不如使用全局。这样做你不需要嘲笑任何东西

it('should call myfunction', () => {
  const fruit = global.fruit
  expect(fruit).toBe('apple')
})
另一种方法是只测试函数是否被调用:

import MyClass from '../index';
import { myFunction } from '../util';

jest.mock('../util', ()=>({myFunction: jest.fn()}))

it('should call myfunction', () => {
  expect(myFunction).toHaveBeenCalled()
})