考虑我正在通过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
,因为这是我正在使用的实际代码中的场景。我已经实现了如上所示的代码,但它不起作用。我哪里错了?
我检查了this帖子,但它在这里没有用。
答案 0 :(得分:3)
在programmer
块中移动上面的describe
变量。另外,我建议将getName()
称为测试iteslf。这应该有效:
let programmer;
beforeEach(() => {
programmer = new Person('John', 'Gray');
spyOn(programmer, 'getFullName');
});
it('getName should call getFullName', () => {
programmer.getName();
expect(programmer.getFullName).toHaveBeenCalled();
})