在没有应用程序的情况下测试 Angular 服务

时间:2021-07-31 20:50:31

标签: angular unit-testing angular-test angular-library

我只有一个包含单个服务的 .ts 文件(不是 angular 项目)

它只是一个文件,不是一个完整的angular项目,甚至不是一个angular库(根本不包含angular.json)

我可以将此服务导入任何 Angular 应用程序,并且运行良好。 我想在它旁边添加一个测试文件,然后通过 jest 作为单个文件运行此测试,即不在 angular 应用程序中

我使用 TestBed 但我总是得到 getComponentFromError

如何在没有完整的 Angular 项目(应用程序或库)的情况下运行测试

1 个答案:

答案 0 :(得分:1)

TestBed 将确保使用 Angular 依赖注入和 ngZone。如果测试中的服务不需要这些,则可以使用构造函数实例化该服务,然后继续进行任何其他 Angular 测试。

const sut: MyClass;
beforeEach(() => {
   sut = new MyClass();
})
if(`kill all humans when time has come`, () => {
   const doomsDay = new Date(year, month, day);
   sut.killAllHumanWhenTimeHasCome(doomsDay);
})

如果您也没有测试运行程序和断言引擎,您可以只添加 jasmine,如 the getting started instruction 中所述。