在Angular 8中进行ng测试时,业力控制台显示“未捕获到的SyntaxError:在JSON位置1抛出了意外的令牌o”

问题描述

这是规格文件

...
...
import { AccountService } from 'src/app/core/account.service';
import accountsummary from 'src/app/core/model/mock-account-summary.json';
import transactions from 'src/app/core/model/mock-transaction-history.json';
import { AccountsummaryComponent } from './accountsummary.component';

describe('AccountsummaryComponent',() => {
  let component: AccountsummaryComponent;
  let fixture: ComponentFixture<AccountsummaryComponent>;
  let debugElement: DebugElement;
  let mockAccountService;
  let mockModalService;
  let accSummary;
  let trans;
  beforeEach(async(() => {
    accSummary = accountsummary;
    trans = transactions;
    mockAccountService = jasmine.createSpyObj(['getAccountSummary','getTransactionHistory']);
    mockModalService = jasmine.createSpyObj(['show']);

    Testbed.configureTestingModule({
      declarations: [AccountsummaryComponent],providers: [
        { provide: AccountService,useValue: mockAccountService },{ provide: BsModalService,useValue: mockModalService },],imports: [ModalModule.forRoot(),RouterTestingModule,HttpClientTestingModule],schemas: [NO_ERRORS_SCHEMA]
    })
      .compileComponents();
  }));

  beforeEach(() => {
    fixture = Testbed.createComponent(AccountsummaryComponent);
    component = fixture.componentInstance;
    debugElement = fixture.debugElement;
  });

  it('clicking on info-icon should open info modal',() => {

    mockAccountService.getTransactionHistory.and.returnValue(of(trans));
    mockAccountService.getAccountSummary.and.returnValue(of(accSummary));
    fixture.detectChanges();
    const showModal = mockModalService.show.and.returnValue(of([]));
    const infoIcon = debugElement.query(By.css('img'));
    infoIcon.triggerEventHandler('click',{});
    fixture.detectChanges();
    expect(showModal).toHaveBeenCalled();
  });
});

这些是json文件

mock-account-summary.json
[
    {
        "id": 1,"spendLim": "5000","discBal": "1966.21","pendBal": "35","availSpend": "2998.79","dailySpendLim": "2998.79"
    }
]

在spec文件中,我有accSumarytrans,它们分别包含json数据。我在嘲笑AccountService调用getAccountSummarygetTransactionHistory方法。我从这些方法返回accSumarytrans。但是Karma控制台说Uncaught SyntaxError: Unexpected token o in JSON at position 1 thrown。测试随机通过并有时失败。请帮忙。 这是component.ts文件

ngOnInit() {

    this.authService.isTokenIdValid().subscribe((res) => {
    },() => {
      window.localStorage.removeItem('token');
      this.router.navigate(['/login'])
    })
    this.accountService.getTransactionHistory().subscribe((res) => {
      res = JSON.parse(res);
      this.transactionHistory = res['Result'].array.RevTrxn.sort((a,b) => {
        return a.trxn.recDate > b.trxn.recDate ? -1 : 1;
      });
      this.filteredTransactions = this.transactionHistory;
      this.filteredTransactionsLength = this.filteredTransactions.length;
      this.currentTransactions = this.transactionHistory.slice(0,this.itemsPerPage);
      this.isTransactionsLoaded = true;
      this.maxDate = new Date(this.filteredTransactions[0].trxn.recDate);
      this.minDate = new Date(this.maxDate.getTime() - 7 * 24 * 60 * 60 * 1000);

      this.bsRangeValue = [this.minDate,this.maxDate];
      this.selectedDaterange = this.bsRangeValue;
      this.onDateChange(this.selectedDaterange);

    })
  }

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)