Я пытаюсь имитировать функцию, экспортированную из файла машинописного текста, в тесте Jasmine. Я ожидаю, что следующее будет издеваться над импортированным foo
и вернуть значение 1 в спецификации для бара.
Похоже, что макет не вызван, поэтому я явно что-то упускаю. Как исправить этот пример?
demo.ts:
export function foo(input: any): any {
return 2;
}
export function bar(input: any): any {
return foo(input) + 2;
}
demo.ts.spec:
import * as demo from './demo';
describe('foo:', () => {
it('returns 2', () => {
const actual = demo.foo(1);
expect(actual).toEqual(2);
});
});
describe('bar:', () => {
// let fooSpy;
beforeEach(() => {
spyOn(demo, 'foo' as any).and.returnValue(1); // 'as any' prevents compiler warning
});
it('verifies that foo was called', () => {
const actual = demo.bar(1);
expect(actual).toEqual(3); // mocked 1 + actual 2
expect(demo.foo).toHaveBeenCalled();
});
});
Неудачи:
- Ожидается, что 4 равно 3.
- Ожидается, что будет вызван шпион foo.