我如何用玩笑来模拟打字稿界面?
How can i mock a typescript interface with jest?
我想模拟一个打字稿界面,我该如何实现?
当我获得人类的属性时,我想 return 'Test' 和 ALIVE。
我在尝试编译下面给定的代码时遇到困难。
错误
TS2345: Argument of type '() => void' is not assignable to parameter of type '() => Human'. Type 'void' is not assignable to type 'Human'.
示例代码
enum STATUS
{
DEAD,
ALIVE
}
export interface Human {
name: string;
status: STATUS.ALIVE | STATUS.DEAD;
};
describe('Human', () => {
const mock = jest.fn<Human,[]>(() => {
name : jest.fn(() => { return 'Test' });
status : jest.fn(() => { return STATUS.ALIVE });
});
it('should return properties',() => {
console.log(human.name);
console.log(human.status);
});
});
您正在 return 模拟 name
和 status
属性的函数,但它们 不是 函数类型。对于 Human
接口的这两个属性,您应该 return string
和 enum
。
enum STATUS {
DEAD,
ALIVE,
}
export interface Human {
name: string;
status: STATUS.ALIVE | STATUS.DEAD;
}
describe('Human', () => {
const mock = jest.fn<Human, []>(() => {
return {
name: 'Test',
status: STATUS.ALIVE,
};
});
it('should return properties', () => {
const human = mock();
expect(human.name).toEqual('Test');
expect(human.status).toEqual(STATUS.ALIVE);
});
});
我想模拟一个打字稿界面,我该如何实现? 当我获得人类的属性时,我想 return 'Test' 和 ALIVE。 我在尝试编译下面给定的代码时遇到困难。
错误
TS2345: Argument of type '() => void' is not assignable to parameter of type '() => Human'. Type 'void' is not assignable to type 'Human'.
示例代码
enum STATUS
{
DEAD,
ALIVE
}
export interface Human {
name: string;
status: STATUS.ALIVE | STATUS.DEAD;
};
describe('Human', () => {
const mock = jest.fn<Human,[]>(() => {
name : jest.fn(() => { return 'Test' });
status : jest.fn(() => { return STATUS.ALIVE });
});
it('should return properties',() => {
console.log(human.name);
console.log(human.status);
});
});
您正在 return 模拟 name
和 status
属性的函数,但它们 不是 函数类型。对于 Human
接口的这两个属性,您应该 return string
和 enum
。
enum STATUS {
DEAD,
ALIVE,
}
export interface Human {
name: string;
status: STATUS.ALIVE | STATUS.DEAD;
}
describe('Human', () => {
const mock = jest.fn<Human, []>(() => {
return {
name: 'Test',
status: STATUS.ALIVE,
};
});
it('should return properties', () => {
const human = mock();
expect(human.name).toEqual('Test');
expect(human.status).toEqual(STATUS.ALIVE);
});
});