Модульный тест Web3 Angular 6 - PullRequest
       8

Модульный тест Web3 Angular 6

0 голосов
/ 15 октября 2018

Я пытаюсь запустить автоматические тесты для сервиса web3, выполненного в Angular 6. Я новичок в этом виде тестов, и еще новее в библиотеке web3.

Сервис:

import { Injectable, InjectionToken, Inject } from '@angular/core';
import Web3 from 'web3';

declare let require: any;
const buttonABI = require('../../assets/abi/Button.json');

export const WEB3 = new InjectionToken<Web3>('web3', {
  providedIn: 'root',
  factory: () => {
    if (Web3) {
      const resp = new Web3(Web3.givenProvider || 'http://localhost:7545');
      return resp;
    } else {
      console.log('No web3? You should consider trying MetaMask!');
    }
  }
});

@Injectable({
  providedIn: 'root'
})
export class CoreService {
  private account = null;

  constructor(@Inject(WEB3) private web3: any, private http: Http) {
  }

  public async getAccount() {
    if (this.account === null) {
      return (await this.web3.eth.getAccounts())[0];
    }
  }
}

Тест:

describe('AppComponent', () => {
  let service: any;

  beforeEach(async(() => {
    TestBed.configureTestingModule({
      declarations: [AppComponent],
      imports: [HttpClientTestingModule, HttpModule],
      providers: [CoreService, { provide: XHRBackend, useClass: MockBackend }]
    }).compileComponents();

    service = new CoreService(
      new Web3(Web3.givenProvider || 'http://localhost:7545'),
      null
    );
  }));

  it('should create the app', async(() => {
    const fixture = TestBed.createComponent(AppComponent);
    const app = fixture.debugElement.componentInstance;
    expect(app).toBeTruthy();
  }));

  it('should get first account', () => {
    console.log(service);
    service
      .getAccount()
      .then(resp => {
        console.log(resp);
        // expect(resp).toBe(1);
      })
      .catch(err => {
        console.log(err);
      });
  });

В этой строке:

new Web3(Web3.givenProvider || 'http://localhost:7545')

Второй параметр - это экземпляр Ganache, к которому он без проблем подключится, но еслиЯ вынимаю этот параметр и заставляю его использовать Web3.givenProvider, чтобы соединиться с Metamask и Rinkeby, я всегда получаю ноль.

Не могу найти ни одного примера в Интернете.

У васесть намеки на это?Заранее большое спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...