feat: 更新测试用例

This commit is contained in:
zdl
2025-11-26 10:54:20 +08:00
parent d2b6904a4a
commit 742ab337dc

View File

@@ -7,26 +7,49 @@
* 3. selector 函数测试 * 3. selector 函数测试
*/ */
import deviceReducer, { updateScreenSize, selectIsMobile } from './deviceSlice'; import deviceReducer, {
updateScreenSize,
selectIsMobile,
selectIsTablet,
selectIsDesktop,
selectDeviceType,
DeviceType,
} from './deviceSlice';
describe('deviceSlice', () => { describe('deviceSlice', () => {
describe('reducer', () => { describe('reducer', () => {
it('should return the initial state', () => { it('should return the initial state', () => {
const initialState = deviceReducer(undefined, { type: '@@INIT' }); const initialState = deviceReducer(undefined, { type: '@@INIT' });
expect(initialState).toHaveProperty('isMobile'); expect(initialState).toHaveProperty('isMobile');
expect(initialState).toHaveProperty('isTablet');
expect(initialState).toHaveProperty('isDesktop');
expect(initialState).toHaveProperty('deviceType');
expect(typeof initialState.isMobile).toBe('boolean'); expect(typeof initialState.isMobile).toBe('boolean');
expect(typeof initialState.isTablet).toBe('boolean');
expect(typeof initialState.isDesktop).toBe('boolean');
expect(typeof initialState.deviceType).toBe('string');
}); });
it('should handle updateScreenSize', () => { it('should handle updateScreenSize', () => {
// 模拟初始状态 // 模拟初始状态
const initialState = { isMobile: false }; const initialState = {
isMobile: false,
isTablet: false,
isDesktop: true,
deviceType: DeviceType.DESKTOP,
};
// 执行 action注意实际 isMobile 值由 detectIsMobile() 决定) // 执行 action注意实际值由 detectDeviceType() 决定)
const newState = deviceReducer(initialState, updateScreenSize()); const newState = deviceReducer(initialState, updateScreenSize());
// 验证状态结构 // 验证状态结构
expect(newState).toHaveProperty('isMobile'); expect(newState).toHaveProperty('isMobile');
expect(newState).toHaveProperty('isTablet');
expect(newState).toHaveProperty('isDesktop');
expect(newState).toHaveProperty('deviceType');
expect(typeof newState.isMobile).toBe('boolean'); expect(typeof newState.isMobile).toBe('boolean');
expect(typeof newState.isTablet).toBe('boolean');
expect(typeof newState.isDesktop).toBe('boolean');
}); });
}); });
@@ -35,22 +58,48 @@ describe('deviceSlice', () => {
const mockState = { const mockState = {
device: { device: {
isMobile: true, isMobile: true,
isTablet: false,
isDesktop: false,
deviceType: DeviceType.MOBILE,
}, },
}; };
const result = selectIsMobile(mockState); expect(selectIsMobile(mockState)).toBe(true);
expect(result).toBe(true); expect(selectIsTablet(mockState)).toBe(false);
expect(selectIsDesktop(mockState)).toBe(false);
expect(selectDeviceType(mockState)).toBe(DeviceType.MOBILE);
}); });
it('selectIsMobile should return false for desktop', () => { it('selectIsTablet should return correct value', () => {
const mockState = { const mockState = {
device: { device: {
isMobile: false, isMobile: false,
isTablet: true,
isDesktop: false,
deviceType: DeviceType.TABLET,
}, },
}; };
const result = selectIsMobile(mockState); expect(selectIsMobile(mockState)).toBe(false);
expect(result).toBe(false); expect(selectIsTablet(mockState)).toBe(true);
expect(selectIsDesktop(mockState)).toBe(false);
expect(selectDeviceType(mockState)).toBe(DeviceType.TABLET);
});
it('selectIsDesktop should return correct value', () => {
const mockState = {
device: {
isMobile: false,
isTablet: false,
isDesktop: true,
deviceType: DeviceType.DESKTOP,
},
};
expect(selectIsMobile(mockState)).toBe(false);
expect(selectIsTablet(mockState)).toBe(false);
expect(selectIsDesktop(mockState)).toBe(true);
expect(selectDeviceType(mockState)).toBe(DeviceType.DESKTOP);
}); });
}); });
@@ -60,4 +109,12 @@ describe('deviceSlice', () => {
expect(action.type).toBe('device/updateScreenSize'); expect(action.type).toBe('device/updateScreenSize');
}); });
}); });
describe('DeviceType constants', () => {
it('should have correct values', () => {
expect(DeviceType.MOBILE).toBe('mobile');
expect(DeviceType.TABLET).toBe('tablet');
expect(DeviceType.DESKTOP).toBe('desktop');
});
});
}); });