如何对Ngrx的这个实现进行测试?

问题描述 投票:0回答:1

这是我第一次和Ngrx合作。我找到了一些教程,但我仍然不知道如何进行测试以挖掘Ngrx的实现。我想从这段代码中测试一个动作:

import { Action } from '@ngrx/store';
import { SystemSettings} from './system';

export enum SystemSettingsActionsTypes {
    UpdateSystemSettings = '[SystemSetting] Update Setting',
    UpdateSystemSettingsSuccess = '[SystemSetting] Update Setting Success',
    UpdateSystemSettingsFail = '[SystemSetting] Update Setting Fail',
    LoadSystemSettings = '[SystemSetting] Load Setting',
    LoadSystemSettingsSuccess = '[SystemSetting] Load Setting Success',
    LoadSystemSettingsFail = '[SystemSetting] Load Setting Fail'
}

export class UpdateSystemSettings implements Action {
    public readonly type = SystemSettingsActionsTypes.UpdateSystemSettings;

    constructor(public payload: SystemSettings) { }
}

export class UpdateSystemSettingsSuccess implements Action {
    public readonly type = SystemSettingsActionsTypes.UpdateSystemSettingsSuccess;

    constructor(public payload: SystemSettings) { }
}

export class UpdateSystemSettingsFail implements Action {
    public readonly type = SystemSettingsActionsTypes.UpdateSystemSettingsFail;

    constructor(public payload: string) { }
}

export class LoadSystemSettings implements Action {
    public readonly type = SystemSettingsActionsTypes.LoadSystemSettings;

    constructor() { }
}

export class LoadSystemSettingsSuccess implements Action {
    public readonly type = SystemSettingsActionsTypes.LoadSystemSettingsSuccess;

    constructor(public payload: SystemSettings) { }
}

export class LoadSystemSettingsFail implements Action {
    public readonly type = SystemSettingsActionsTypes.LoadSystemSettingsFail;

    constructor(public payload: string) { }
}

export type SystemSettingsActions =
    | UpdateSystemSettings
    | UpdateSystemSettingsSuccess
    | UpdateSystemSettingsFail
    | LoadSystemSettings
    | LoadSystemSettingsSuccess
    | LoadSystemSettingsFail;

在这一刻,我有代码样本,但我在测试中很糟糕,但仍然不知道如何使它好(我的代码上的良好工作示例将非常有帮助)。

describe('LoadSystemSettingsSuccessfull', () => {
  it('should load system settings successfully', () => {

    const payload: SystemSettings[] = [
      {
        measure: 1,
        clock: 1,
        dateFormat: 1,
        lowQuality: 1,
        highQuality: 1
      }
    ];
    const action = new LoadSystemSettingsSuccess(payload);

    expect({ ...action}).toEqual({
      type: LoadSystemSettingsSuccess,
      payload,
    });
  });
});
angular typescript ngrx
1个回答
0
投票

你的动作测试看起来很好!问自己Why am I testing this?通常会有所帮助,在这种情况下,您正在测试一个动作的实现是否创建了您期望的对象。

虽然这些测试场景经常被用作测试NGRX的介绍,但它们可能也是最无用的,并且 - 在我看来 - 通常不能证明这些努力的合理性。

相反,专注于测试NGRX的以下元素:

  • 减速机
  • 选择
  • 效果

这些是负责您应用功能的主要构建块,应该进行全面测试。

© www.soinside.com 2019 - 2024. All rights reserved.