假设我有一个打字稿类
a.ts
export class A {
constructor() {
this.__functionA()
}
private __functionA(){
this.__functionB()
}
private __functionB(){
}
}
现在,我的 Class
有一些测试import { A } from "./a"
describe("Class A",() => {
it(`__functionB should Have been called`,() => {
A.proptotype.__functionB = jest.fn()
A.proptotype.__functionA = jest.fn()
let instance = new A()
expect (instance.__functionB).toHaveBeenCalled()
expect (instance.__functionA).toHaveBeenCalled()
})
})
测试失败并出现错误
expect(jest.fn()).toHaveBeenCalled()
现在,当我只模拟类 __functionA
的{{1}}并仅针对函数运行我的断言时,即{{1}我的测试通过。为什么这样?
如何模拟类的多个函数?
如果我在这里做错了,请纠正我。
N.B。: - 我正在使用 jest 来运行我的测试。
答案 0 :(得分:0)
找到答案,
我只需要替换
class Class2ReadOnly {
private Class2 _master;
public Class2ReadOnly(Class2 master) {
_master = master;
}
public string Property {
get { return _master.Property; }
}
}
class Class1 {
List<Class2ReadOnly> classes = new List<Class2ReadOnly>();
public IEnumerable<Class2ReadOnly> Classes {
get { return classes.AsEnumerable(); }
}
public void AddClass(Class2 cls) {
classes.Add(new Class2ReadOnly(cls));
}
}
带
A.proptotype.__functionB = jest.fn()
A.proptotype.__functionA = jest.fn()
一切正常。
希望,这有助于某人。