{ cons-6ren">
gpt4 book ai didi

angular - 在 Angular 中使用 TypeScript 对文件大小进行 Jasmine 单元测试

转载 作者:太空狗 更新时间:2023-10-29 18:23:06 24 4
gpt4 key购买 nike

正在寻找如何在输入类型为"file"更改事件时测试文件大小的最佳实践。

现在我的测试规范如下:

it('attach file with too large size', () => {
const file: File = {
name: 'filename',
type: 'image/png',
size: 8242880,
lastModified: 1,
lastModifiedDate: new Date(),
webkitRelativePath: '',
msClose: () => {},
msDetachStream: () => {},
slice: (): Blob => null,
};
const event = { target: { files: [file] } };

component.onFileChange(event); // file validation happens into it too

const error = control.getError('file_size');
expect(error).toBeTruthy();
});

有没有更好的方法来使用 TypeScript 设置文件大小属性?当我尝试将 size 属性直接设置为 File 对象时,这是不允许的,因为 size 属性是只读

const file = new File([''], 'filename', { type: 'image/png' });
file.size = 8242880; // TS error

我在需要为我定义所有 File 对象属性的地方模拟 File 对象的当前方式看起来不是很漂亮,但找不到更好的方法。有什么想法吗?

最佳答案

您可以使用 Object.defineProperty覆盖大小属性。

/** Creates a "1TB" file given the file name. */
function getHugeFile(name: string) : File {
const file = new File([''], name);
Object.defineProperty(
file, 'size', {value: Math.pow(1024, 4), writable: false});
return file;
}

关于angular - 在 Angular 中使用 TypeScript 对文件大小进行 Jasmine 单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51744005/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com