mirror of
https://github.com/cocos/cocos-engine.git
synced 2026-09-07 00:02:53 +08:00
* Binary serialization * Update snapshots * Update * rename option ccon -> useCCON * Missing script * encodeCCONJson: chunks -> chunkURLs * Update * (de)serializeSymbol -> (de)serializeTag; * CustomizedSerializable -> CustomSerializable * _deserializePrimitiveObject -> _fillPlainObject * Unify CCClass CCClassConstructor * encodeCCONJson -> parseCCONJson * Custom serializable * Move (de)serializeSuper(This) from context into global * property -> read(write)Property; (de)serializeThis(Super) -> (read)writeThis(Super) * CI and lint * Mock cc env
59 lines
2.0 KiB
TypeScript
59 lines
2.0 KiB
TypeScript
|
|
import { MissingScript } from '../../../cocos/core';
|
|
import { deserialize } from '../../../cocos/core/data/deserialize';
|
|
import { js } from '../../../cocos/core/utils/js';
|
|
|
|
describe(`Missing class deserialization`, () => {
|
|
const serialized = {
|
|
'__type__': '__type_that_can_never_be_found__',
|
|
foo: 2,
|
|
};
|
|
|
|
const mockReportMissingClass = jest.fn();
|
|
|
|
test(`Customized reporter`, () => {
|
|
const deserialized = deserialize(serialized, undefined, {
|
|
reportMissingClass: mockReportMissingClass,
|
|
});
|
|
expect(deserialized).toBe(null);
|
|
expect(mockReportMissingClass).toBeCalledTimes(1);
|
|
expect(mockReportMissingClass).toBeCalledWith('__type_that_can_never_be_found__');
|
|
});
|
|
|
|
test(`Customized reporter by changing deserialize.reportMissingClass`, () => {
|
|
const spy = jest.spyOn(deserialize, 'reportMissingClass');
|
|
const deserialized = deserialize(serialized, undefined, {
|
|
reportMissingClass: undefined,
|
|
});
|
|
expect(deserialized).toBe(null);
|
|
expect(spy).toBeCalledTimes(1);
|
|
expect(spy).toBeCalledWith('__type_that_can_never_be_found__');
|
|
spy.mockRestore();
|
|
});
|
|
|
|
test(`Class finder returns MissingScript`, () => {
|
|
function classFinder(type: any) {
|
|
const result = js._getClassById(type);
|
|
if (result) {
|
|
return result;
|
|
} else {
|
|
return MissingScript;
|
|
}
|
|
}
|
|
|
|
const deserialized = deserialize(serialized, undefined, {
|
|
classFinder,
|
|
reportMissingClass: mockReportMissingClass,
|
|
}) as MissingScript;
|
|
|
|
expect(mockReportMissingClass).toBeCalledTimes(1);
|
|
expect(mockReportMissingClass).toBeCalledWith('__type_that_can_never_be_found__');
|
|
expect(deserialized).toBeInstanceOf(MissingScript);
|
|
expect(deserialized._$erialized).toStrictEqual({
|
|
'__type__': '__type_that_can_never_be_found__',
|
|
foo: 2,
|
|
});
|
|
});
|
|
});
|
|
|