angular - TestBed.get 和 new Service(...dependencies) 有什么区别

标签 angular typescript testing jasmine

angular guide演示了两种不同的测试方法,一种是通过调用 new Service() 并直接向构造函数提供依赖项,另一种是通过调用 TestBed.get(Service) 使用依赖项注入(inject)。

这两个在我看来在功能上是相同的,除了当我连续调用 TestBed.get() 时它不会在第一次调用后调用构造函数。

angular documentation还提到 TestBed.get() 已弃用(即使指南仍然引用它!)并且我应该使用 TypeInjectionToken相反,但我看不出这些类中的任何一个如何替代 TestBed.get()。

最佳答案

Deprecated from v9.0.0 use TestBed.inject

get(token: any, notFoundValue?: any): any

看看我们现在如何注入(inject):

describe('MyAmountComponent', () => {
  let component: MyAmountComponent;
  let fixture: ComponentFixture<MyAmountComponent>;
  let productService: ProductService;
  let orderService: OrderService;
  beforeEach(() => {
    TestBed.configureTestingModule({
       .....
    })
    .compileComponents();
    productService = TestBed.inject(ProductService);
    orderService = TestBed.inject(OrderService);
  });

只需添加 so might 就可以帮助某人。

关于angular - TestBed.get 和 new Service(...dependencies) 有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56776234/

相关文章:

angular - 防止 Ionic 中出现重复的 Toast 消息

angular - 如何使用 Firebase 功能部署 Angular 9 通用应用程序

Angular 无法解析 SomeEffect (?) 的所有参数

javascript - 从函数返回 promise

typescript - 收到错误 "Uncaught (in promise) TypeError: object is not a constructor(…)"

angular - AG-Grid 与 Angular2。在 angular2 项目中安装 ag-grid 时出错

javascript - Sidenav 抛出异常 : Error during evaluation of "onShown"

ios - 如何在 UITests 的 `detailTextLabel` 中访问 `tableViewCell`?

java - 模拟封装集合的对象

testing - 出于测试目的在 CPU 中禁用 AVX2