الفرق بين المراجعتين لصفحة: «React/test renderer»
< React
Kinan-mawed (نقاش | مساهمات) أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE:مصير الاختبار (Test Renderer)}}</noinclude>' |
Kinan-mawed (نقاش | مساهمات) لا ملخص تعديل |
||
سطر 1: | سطر 1: | ||
<noinclude>{{DISPLAYTITLE:مصير الاختبار (Test Renderer)}}</noinclude> | <noinclude>{{DISPLAYTITLE:مصير الاختبار (Test Renderer)}}</noinclude> | ||
== الاستيراد == | |||
<syntaxhighlight lang="javascript"> | |||
import TestRenderer from 'react-test-renderer'; // ES6 | |||
const TestRenderer = require('react-test-renderer'); // ES5 with npm | |||
</syntaxhighlight> | |||
== لمحة عامة == | |||
تُزوّدنا هذه الحزمة بمُصيِّر React يُمكِن استخدامه لتصيير مكوّنات React إلى كائنات JavaScript نقيّة بدون الاعتماد على DOM أو بيئة الهاتف المحمول الأصليّة. | |||
تُسهِّل هذه الحزمة بشكل أساسي من أخذ صورة حول التسلسل الهرمي للمكوّنات (مشابه لشجرة DOM) والتي يُصيّرها React DOM أو React Native بدون استخدام المتصفح أو jsdom. | |||
مثال:<syntaxhighlight lang="javascript"> | |||
import TestRenderer from 'react-test-renderer'; | |||
function Link(props) { | |||
return <a href={props.page}>{props.children}</a>; | |||
} | |||
const testRenderer = TestRenderer.create( | |||
<Link page="https://www.facebook.com/">Facebook</Link> | |||
); | |||
console.log(testRenderer.toJSON()); | |||
// { type: 'a', | |||
// props: { href: 'https://www.facebook.com/' }, | |||
// children: [ 'Facebook' ] } | |||
</syntaxhighlight>نستطيع استخدام ميزة الاختبار بالتقاط الصورة الموجودة في Jest لحفظ نسخة عن شجرة JSON بشكل تلقائي إلى ملف والتحقق في اختباراتك من أنّها لم تتغيّر. تعلّم المزيد حول ذلك. | |||
بإمكانك أيضًا التنقل في الناتج لإيجاد عقد محددة:<syntaxhighlight lang="javascript"> | |||
import TestRenderer from 'react-test-renderer'; | |||
function MyComponent() { | |||
return ( | |||
<div> | |||
<SubComponent foo="bar" /> | |||
<p className="my">أهلًا</p> | |||
</div> | |||
) | |||
} | |||
function SubComponent() { | |||
return ( | |||
<p className="sub">فرعي</p> | |||
); | |||
} | |||
const testRenderer = TestRenderer.create(<MyComponent />); | |||
const testInstance = testRenderer.root; | |||
expect(testInstance.findByType(SubComponent).props.foo).toBe('bar'); | |||
expect(testInstance.findByProps({className: "sub"}).children).toEqual(['Sub']); | |||
</syntaxhighlight> | |||
== مرجع == | |||
=== <code>TestRenderer.create()</code> === | |||
<syntaxhighlight lang="javascript"> | |||
TestRenderer.create(element, options); | |||
</syntaxhighlight>إنشاء نسخة من <code>TestRenderer</code> مع عنصر React المُمرَّر. لا يستخدم هذا التابع DOM الحقيقي ولكنّه يُصيِّر بشكل كامل شجرة المكوّنات في الذاكرة. تملك النسخة المُعادة التوابع والخاصيّات التالية. | |||
=== <code>testRenderer.toJSON()</code> === |
مراجعة 20:15، 10 سبتمبر 2018
الاستيراد
import TestRenderer from 'react-test-renderer'; // ES6
const TestRenderer = require('react-test-renderer'); // ES5 with npm
لمحة عامة
تُزوّدنا هذه الحزمة بمُصيِّر React يُمكِن استخدامه لتصيير مكوّنات React إلى كائنات JavaScript نقيّة بدون الاعتماد على DOM أو بيئة الهاتف المحمول الأصليّة.
تُسهِّل هذه الحزمة بشكل أساسي من أخذ صورة حول التسلسل الهرمي للمكوّنات (مشابه لشجرة DOM) والتي يُصيّرها React DOM أو React Native بدون استخدام المتصفح أو jsdom.
مثال:
import TestRenderer from 'react-test-renderer';
function Link(props) {
return <a href={props.page}>{props.children}</a>;
}
const testRenderer = TestRenderer.create(
<Link page="https://www.facebook.com/">Facebook</Link>
);
console.log(testRenderer.toJSON());
// { type: 'a',
// props: { href: 'https://www.facebook.com/' },
// children: [ 'Facebook' ] }
نستطيع استخدام ميزة الاختبار بالتقاط الصورة الموجودة في Jest لحفظ نسخة عن شجرة JSON بشكل تلقائي إلى ملف والتحقق في اختباراتك من أنّها لم تتغيّر. تعلّم المزيد حول ذلك. بإمكانك أيضًا التنقل في الناتج لإيجاد عقد محددة:
import TestRenderer from 'react-test-renderer';
function MyComponent() {
return (
<div>
<SubComponent foo="bar" />
<p className="my">أهلًا</p>
</div>
)
}
function SubComponent() {
return (
<p className="sub">فرعي</p>
);
}
const testRenderer = TestRenderer.create(<MyComponent />);
const testInstance = testRenderer.root;
expect(testInstance.findByType(SubComponent).props.foo).toBe('bar');
expect(testInstance.findByProps({className: "sub"}).children).toEqual(['Sub']);
مرجع
TestRenderer.create()
TestRenderer.create(element, options);
إنشاء نسخة من TestRenderer
مع عنصر React المُمرَّر. لا يستخدم هذا التابع DOM الحقيقي ولكنّه يُصيِّر بشكل كامل شجرة المكوّنات في الذاكرة. تملك النسخة المُعادة التوابع والخاصيّات التالية.