我正在尝试使用业力和茉莉花来测试简单的角度函数。
class
export class Acl {
async caller() {
console.log("first statement");
const calledMe = await this.callMe().toPromise();
return calledMe;
}
callMe() {
return new Observable((observer) => observer.next({ something: "key" }));
}
}
测试文件
import { Acl } from "./main";
import { fakeAsync, tick } from "@angular/core/testing";
import { Observable } from "rxjs";
describe("Hello world", () => {
it("test the async", fakeAsync(() => {
const t = new Acl();
spyOn(t, "callMe").and.returnValue(
new Observable((observer) => observer.next({ something: "key" }))
);
const cl = t.caller();
console.log("a print ", cl);
tick();
}));
});
如何测试这些功能。
您的测试应该至少由一个期望组成,否则您不是要测试特定的结果,而只是代码运行没有错误。
在您的情况下,我认为您可以将间谍存储为常量,然后期望它在tick
之后被调用,像这样:
describe("Hello world", () => {
it("test the async", fakeAsync(() => {
const t = new Acl();
const spy = spyOn(t, "callMe").and.returnValue(
new Observable((observer) => observer.next({ something: "key" }))
);
t.caller();
tick();
expect(spy).toHaveBeenCalled()
}));
});