跳到主要内容
版本:26.x.

testarea de想象一下

Testarea de Imagine Este UN interner Foarte Util,OrideCâteoridoriţisăvăsasiguraţicăinterfaţanuschimbăînmodneaşteptat。

典型的快照测试用例呈现UI组件,拍摄快照,然后将其与在测试中存储的引用快照文件进行比较。如果两个快照不匹配,则测试将失败:更改是意外的,或者需要将参考快照更新为UI组件的新版本。

testarea de imagine cu jest示例测试为一个链接组件:

进口 反应 “反应” ;
进口 渲染器 '反应测试渲染器' ;
进口 关联 '../link.react' ;
'渲染正确' => {
const = 渲染器
创造 < 关联 = http://www.facebook.com. > Facebook 关联 >
托杰森 ;
预计 tomatchsnapshot. ;
} ;

Prima DataCând母性测试SE执行¶,jestcreează联合国fişier想象一下护理aratōastfel:

出口 [ ` 渲染正确1 ` ] = `
classname =“正常”
href =“http://www.facebook.com”
onmouseenter = {[函数]}
OnMouseLeave = {[功能]}
>
Facebook
` ;

Imaginea Ar TrebuiSìfieadăugatăalăturidedodifyărilede cod,şirevizuite ca parte a procesului de代码审查。JestUtilizează.漂亮格式pentru face imaginileuşordeînţelesomuluiîntimpul procesului de代码审查。在后续测试运行中,Jest将使用上一个快照将渲染的输出进行比较。înCazulîncare acesea se potrivesc,testul va trece。如果它们不匹配,则测试赛跑者在代码中找到了一个错误(在<链接>在这种情况下的组件)应该是固定的,或者实现已更改,并且需要更新快照。

注意:快照直接缩小到渲染的数据 - 在我们的示例中<链接/>组成部分道具传递给它。这意味着即使任何其他文件都缺少道具(例如,app.js.) 在里面<链接/>组件,它仍将通过测试,因为测试不知道使用<链接/>组件,它只是范围link.reacect.js.。此外,在其他快照测试中呈现不同的道具的相同组件不会影响第一个,因为测试不对彼此了解。

Mai MulteInformaţiidespre暨testarea de imaginefuncţioneazăşide ce am Consuit-O pot figăsitepeyabo入口。VA RecomandamSù花旗素食主义者博客yabo入口pentruaînţelegemai binecândartrebuishultizaţitestarea de imagine。De患者,Recomandămvizionarea acestui视频Egghead.Despre testarea de想象铜笑。

Actualizarea imaginilor.
//更新了与不同地址的链接的测试用例
'渲染正确' => {
const = 渲染器
创造 < 关联 = http://www.instagram.com. > Instagram. 关联 >
托杰森 ;
预计 tomatchsnapshot. ;
} ;

înrest caz,jest vaafişaurmătoarele:

DIN MOMANT CE AM Actualizat Componenta noastre Pentru A indage Spre OAltăAdresă,EsteFirescSăAşteptămModififăriînimaginea Acesei Componsee。测试Nostru de imagineeşueazədooarece想象一下实际化ăpentru componentanoastrōnu mai corepunde cu imaginea de参考资料。

要解决此问题,我们需要更新我们的快照工件。您可以使用一个标志运行jest,该标志将重新生成快照:

jest -updatesnapshot.

acceptaţimodificȱrileexecutâdcomanda de mai sus。Puteţiuteriza,echivalentul-Upentru agegenera imaginile,dacăprevileaţi。AceAka Va Regenera imaginile de Referon Pentru Toate Testele de Imagine。daca a avea si si alte teste de imageeş申请in cauza unor bug-urineintenţionate,va fi nevoiesărezolvămbug-urileînaintede a regenera imaginile pentru a evita stocarea imaginilor cu comportame eronat。

Dacīdoriţisălimaraţitestele pentru care sevor regenera imaginile,puteţisecoona oopţiunesuplimentară--testnamepattern.Pentru a Re-înregistraimaginile doar pentru acele teste care se potrivesc cu modelul somector。

puteţiîncercaaceaseăfuncanionalita prin clonarea审计模仿,modififarea moditionei.关联,şirulorea jest。

交互式快照模式

输入交互式快照模式后,JEST会一次浏览失败的快照一次测试,并让您有机会查看失败的输出。

从这里开始,您可以选择更新该快照或跳至下一步:

完成后,Jest将在返回观看模式之前为您提供摘要:

内联快照漂亮。要使用内联快照,您必须拥有漂亮安装在您的项目中。写入测试文件时,您将遵守更漂亮的配置。

如果你有漂亮安装在一个jest无法找到它的位置,您可以告诉Jest如何使用它使用的“prettierpath”配置属性。

例子:

首先,你写一个测试,打电话.tomatchinlinesnapshot()没有参数:

'渲染正确' => {
const = 渲染器
创造 < 关联 = https://prettier.io. > 漂亮 关联 >
托杰森 ;
预计 tomatchinlinesnapshot. ;
} ;

下次跑步时,将被评估,并且将写入快照作为参数tomatchinlinesnapshot.

'渲染正确' => {
const = 渲染器
创造 < 关联 = https://prettier.io. > 漂亮 关联 >
托杰森 ;
预计 tomatchinlinesnapshot. `
classname =“正常”
href =“https://prettier.io”
onmouseenter = {[函数]}
OnMouseLeave = {[功能]}
>
漂亮
` ;
} ;

这里的所有都是它的!您甚至可以使用快照更新- updatesnapshot.或者使用键入- 手表模式。

物业匹配器
'每次都会失败' => {
const 用户 = {
创造 新的 日期
ID 数学 地面 数学 随机的 * 20.
姓名 '勒布朗·詹姆斯'
} ;
预计 用户 tomatchsnapshot. ;
} ;
//快照
出口 [ ` 每次都会失败1 ` ] = `
目的 {
“创造”:2018-05-19T23:36:09.816z,
“ID”:3,
“姓名”:“勒布朗詹姆斯”,
}
` ;

对于这些情况,Jest允许为任何属性提供非对称匹配器。在写入或测试快照之前检查这些匹配器,然后保存到快照文件而不是收到的值:

'将检查匹配器并通过' => {
const 用户 = {
创造 新的 日期
ID 数学 地面 数学 随机的 * 20.
姓名 '勒布朗·詹姆斯'
} ;
预计 用户 tomatchsnapshot. {
创造 预计 任何 日期
ID 预计 任何 数字
} ;
} ;
//快照
出口 [ ` 将检查匹配器并通过1 ` ] = `
目的 {
“createat”:任何<日期>,
“ID”:任何
“姓名”:“勒布朗詹姆斯”,
}
` ;

没有匹配器的任何给定值都将被完全检查并保存到快照:

'将检查值并通过' => {
const 用户 = {
创造 新的 日期
姓名 '邦德......詹姆斯邦德'
} ;
预计 用户 tomatchsnapshot. {
创造 预计 任何 日期
姓名 '邦德......詹姆斯邦德'
} ;
} ;
//快照
出口 [ ` 将检查值并通过1 ` ] = `
目的 {
“createat”:任何<日期>,
“姓名”:'邦德......詹姆斯邦德',
}
` ;

最佳实践1.将快照视为代码漂亮格式要使快照人类可读,但您可能会发现引入额外的工具非常有用,如eslint-plugin-jest有它没有大快照选项,或者快照 - 差异使用其组件快照比较功能,以提升简短,重点的断言。

目标是让您轻松查看拉拉请求中的快照,并在测试套件失败时违背再生快照的习惯,而不是检查其失败的根本原因。

2.测试应该是确定性的钟护理illizează.date.now(),imaginea persation pentruaceaseăomenceăvafieRităde Fiecare Date eSte Rulat Testul。在这种情况下,我们可以模拟date.now()方法每次运行测试时返回一致的值:

日期 现在 = 笑话 FN. => 1482363367071 ;

acum,de fiecaredatăcândseseocutătestul,date.now()va retitha.1482363367071înmod常数。Acest Lucru VA Confulue LaAceaşi想象一般PentruaceAsdò组件indiferentcânds-ar executa testul。

3.使用描述性快照名称
出口 [ ` <用户名/>应该处理一些测试用例 ` ] = ` 无效的 ` ;
出口 [ ` 应该处理一些其他测试用例 ` ] = `
艾伦图灵
` ;

到:

出口 [ ` 应该呈现null ` ] = ` 无效的 ` ;
出口 [ ` 应该是alan图灵 ` ] = `
艾伦图灵
` ;

由于后来描述了在输出中的预期预期,因此更清楚地看到它是错误的:

出口 [ ` 应该呈现null ` ] = `
艾伦图灵
` ;
出口 [ ` 应该是alan图灵 ` ] = ` 无效的 ` ;

întrebărifrecvente.是否在连续集成(CI)系统上自动写入快照?AR Trebui Commit-UITe Imagile序列化?testarea de imaginefuncţioneazanumai cu compansee反应?反应şi.。原生SUNT联合国审查了FOARTE BUN DE UTURIATARE。Cu toate acesea,Imaginile pot pot captura Orice valoareserializabilăşiartrebui使用oriCânddoriţisătestaţidacùrezultatuleste corect。Proiectul JestConţineMuleElemplede Testare Jest,Rezultatul Libriei deAseržiunijest,Predum i loguri din diferitepərţialeculuijest。vedeţi联合国审查了detestarea de想象一个控制台înproiectul jest。

Care EsteDiferenţaîntretestarea deimagineşitestareavizualăde gregsii?yabo入口Blogul Jest.。

快照测试替换单元测试吗?Care EstePerformanţatestelor deimagineînceea cepriveştevitezaşiwideiuneafişierelor生成吗?暨rezolv冲突încadrulfişierelororde想象一下吗?Este Posibil S Hia Appipiile de Test-Desile Dhation Dem Imagine?代码覆盖是否使用快照测试?