首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我们可以在Angular中使用Jasmine/Karma来测试ngrx流吗?

我们可以在Angular中使用Jasmine/Karma来测试ngrx流吗?
EN

Stack Overflow用户
提问于 2018-07-18 13:04:38
回答 1查看 231关注 0票数 4

我已经为我的angular应用程序使用了ngrx。现在我正在尝试使用Jasmine和karma工具进行单元测试,但是我找不到合适的方法来测试ngrx流。

请帮助我提供任何方法,否则来源也很好,提前感谢。

请找到下面的组件,我将测试。

代码语言:javascript
复制
login-form.component.ts


import { Component, OnInit, AfterViewInit, AfterViewChecked, AfterContentInit } from '@angular/core';
import { FormGroup, FormBuilder, Validators, FormControl } from '@angular/forms';
import { ModalService } from '../../../@carbon/modal';
import { LoginResponse } from '../../../@core/login/login.contract';
import { LoginService } from '../../../@core/login/login.service';
import { SessionStorageService } from '../../../@core/session-storage/session-storage.service';
import { LocalStorageService } from '../../../@core/local-storage/local-storage.service';
import { Store } from '@ngrx/store';
import { AppState } from '../../../@models/app-state';
import { ActionSignIn, selectorLogin } from '../../../@core/login/login.reducer';
import { LoginState } from '../../../@core/login/login.state';
import { BusyState } from '../../../@shared/busy-indicator/busy-state';
import {Router} from '@angular/router';


@Component({
  selector: 'eose-login-form',
  templateUrl: './login-form.component.html',
  styleUrls: ['./login-form.component.scss']
})
export class LoginFormComponent implements OnInit {

 // loading: BusyState;
  loading: boolean = false;
  loadingMsg: string = '';
  authForm: FormGroup;
  changeForm: FormGroup
  constructor(
    private store: Store<AppState>,
    private fb: FormBuilder,
    private modalService: ModalService
  ) {
    this.authForm = this.fb.group({
      'env': new FormControl('cdtdevdir'),
      'email': new FormControl('', Validators.required),
      'password': new FormControl('', Validators.required),
      'newpassword': new FormControl(''),
      'confirmpassword': new FormControl('')
    })
  }

  handleLoadingChange(loadingState: BusyState) {
   // this.loading = loadingState;
  }


  ngOnInit() {
    this.store.select(selectorLogin)
    .subscribe((loginState: LoginState) => {
      this.loading = loginState.loading;
      this.loadingMsg = loginState.loadingMsg;
    })
  }

  openModal() {
    this.modalService.open('sign-in');
  }

  onLogin() {
     this.store.select(selectorLogin)
     .subscribe((loginState: LoginState) => {
       this.loading = loginState.loading;
     })
    console.log('Login Payload', this.authForm.value);
   this.store.dispatch(new ActionSignIn(this.authForm.value));
  }
}

EN

回答 1

Stack Overflow用户

发布于 2018-07-19 23:57:18

您可以spyOn dispatch并检查操作是否已调度

代码语言:javascript
复制
let actionSignIn = new ActionSignIn(your input);
expect(store.dispatch).toHaveBeenCalldWith(actionSignIn);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51393920

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档