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()
})