考虑一下我在Karma中运行的以下Jasmine代码:
class Person { constructor(firstName, lastName) { this.firstName = firstName; this.lastName = lastName; } getName() { this.getFullName() } getFullName() { this.firstName + this.lastName } } describe('Test Person', () => { beforeEach(() => { const programmer = new Person('John', 'Gray'); spyOn(programmer, 'getFullName'); programmer.getName(); }); it('getName should call getFullName', () => { expect(programmer.getFullName).toHaveBeenCalled(); }) });
我想检查一下 programmer.getName 确实打过电话 programmer.getFullName 。我知道可以通过检查 getName ,但我想明确检查 getFullName 调用,因为这是我正在使用的实际代码中的场景。我已经实现了如上所示的代码,但它不起作用。我哪里做错了?
programmer.getName
programmer.getFullName
getName
getFullName
我检查过了 this post,但它在这里不起作用。
移动 programmer 中的变量 describe 块另外,我建议打电话 getName() 这是测试iteslf。这应该可以:
programmer
describe
getName()
let programmer; beforeEach(() => { programmer = new Person('John', 'Gray'); spyOn(programmer, 'getFullName'); }); it('getName should call getFullName', () => { programmer.getName(); expect(programmer.getFullName).toHaveBeenCalled(); })