• [Angular] Providers and useFactory


    // service.ts
    
    import { Injectable, Inject } from '@angular/core';
    import { Http } from '@angular/http';
    
    import { Observable } from 'rxjs/Observable';
    import 'rxjs/add/operator/map';
    
    @Injectable()
    export class FoodService {
      constructor(
        private http: Http,
        private api: string
      ) {
        console.log(this.api);
      }
      getFood(): Observable<any[]> {
        return this.http.get(this.api)
          .map(response => response.json());
      }
    }

    Using factory provider:

    import { Component, OnInit } from '@angular/core';
    import { Http } from '@angular/http';
    
    import { Observable } from 'rxjs/Observable';
    
    import { FoodService } from '../food.service';
    
    interface Drink {
      name: string,
      price: number
    }
    
    export function DrinkFactory(http) {
      return new FoodService(http, '/api/drinks');
    }
    
    @Component({
      selector: 'drink-viewer',
      providers: [
        {
          provide: FoodService,
          useFactory: DrinkFactory,
          deps: [
            Http
          ]
        }
      ],
      template: `
        <div>
          <div *ngFor="let item of items$ | async">
            {{ item.name }} {{ item.price | currency:'USD':true }}
          </div>
        </div>
      `
    })
    export class DrinkViewerComponent implements OnInit {
      items$: Observable<Drink[]>;
      constructor(private foodService: FoodService) {}
      ngOnInit() {
        this.items$ = this.foodService.getFood();
      }
    }

    Here we create 'DrinkFactory' as a named funciton, this is good for AOT, so recommended doing this way.

  • 相关阅读:
    Springboot单元测试(MockBean||SpyBean)
    使用 Mockito 单元测试 – 教程
    spring结合mockito
    Spatis service单元测试: 使用mock mapper的方式
    单元测试Mockito中的Mock和Spy
    强大的Mockito测试框架
    Mockito单测,mock service层的mapper
    Mockito教程
    SetupFactory 制作安装包
    fiddler的一些记录
  • 原文地址:https://www.cnblogs.com/Answer1215/p/6839071.html
Copyright © 2020-2023  润新知