gpt4 book ai didi

reactjs - 使用 Luxon : how do I mock . setZone ('local' 进行 Jest 单元测试

转载 作者:行者123 更新时间:2023-12-03 23:51:25 32 4
gpt4 key购买 nike

我有一个非常简单的日期组件:

import { DateTime } from 'luxon';
export const SimpleDateCell = ({ item, itemKey }) => {
const isoDateString = item[itemKey];

if (!isoDateString) {
return null;
}

const formattedDate = DateTime
.fromISO(isoDateString, { zone: 'utc' })
.setZone('local')
.toLocaleString(DateTime.DATETIME_MED);

return (
<time dateTime={isoDateString} title={isoDateString}>
{formattedDate}
</time>
); };

我只是在本地测试它:
import React from 'react'; 
import SimpleDateCell from './SimpleDateCell';
import { DateTime, Settings } from 'luxon';
import renderer from 'react-test-renderer';

const testData = {
companyName: 'test company',
tenantId: 'ai/prod/00DA0000000XoMwMAK',
// this will be different on different servers when .setZone('local')
createdDate: '2019-02-13T15:53:00', };

describe('SimpleDateCell', () => {
it('should match the snapshot', () => {


const tree = renderer
.create(
<SimpleDateCell item={testData} itemKey="createdDate" />
).toJSON();
expect(tree).toMatchSnapshot();
}); });

问题是单元测试必须在我制作快照的时区中运行。所以我们的 CI 服务器拒绝了这一点。

有没有办法在任何时区进行此传递? 也许 mock setZone('local') 响应?有没有 CI 专家使用 luxon?

谢谢!

最佳答案

Settings.defaultZone 应该管用。以防万一我强调:它会影响所有方法,比如 DateTime.local() .有人是 already confused由那个。

作为替代方案,您可以模拟本地 Date timezone-mock timezoned-date 我相信这也应该有所帮助。如果出于某种原因,您的代码的某些部分适用于 native Date,那么这种方法将更加一致。而是 luxon 的 DateTime .

关于reactjs - 使用 Luxon : how do I mock . setZone ('local' 进行 Jest 单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57103146/

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