这是我第一次和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,
});
});
});
你的动作测试看起来很好!问自己Why am I testing this?
通常会有所帮助,在这种情况下,您正在测试一个动作的实现是否创建了您期望的对象。
虽然这些测试场景经常被用作测试NGRX的介绍,但它们可能也是最无用的,并且 - 在我看来 - 通常不能证明这些努力的合理性。
相反,专注于测试NGRX的以下元素:
这些是负责您应用功能的主要构建块,应该进行全面测试。