mav*_*ick 2 javascript unit-testing jasmine karma-jasmine
考虑一下我通过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();
})
});
Run Code Online (Sandbox Code Playgroud)
我要检查programmer.getName确实调用了programmer.getFullName。我知道可以通过检查的返回值在此处进行测试getName,但是我想显式检查是否getFullName调用了,因为这是我正在使用的实际代码中的场景。我已经实现了如上所示的代码,但无法正常工作。我要去哪里错了?
我检查了这篇文章,但在这里不起作用。
小智 5
将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();
})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6272 次 |
| 最近记录: |