- QUnit - Nested Modules
- QUnit - Callbacks
- QUnit - Expect Assertions
- QUnit - Async Call
- QUnit - Only Test
- QUnit - Skip Test
- QUnit - Execution Procedure
- QUnit - Using Assertions
- QUnit - API
- QUnit - Basic Usage
- QUnit - Environment Setup
- QUnit - Overview
- QUnit - Home
QUnit Useful Resources
Selected Reading
- Who is Who
- Computer Glossary
- HR Interview Questions
- Effective Resume Writing
- Questions and Answers
- UPSC IAS Exams Notes
QUnit - Quick Guide
QUnit - Overview
测试是检查申请功能的过程,不论它是否按照要求开展工作,并确保在开发商一级进行单位测试。 单位测试是单一实体的测试(等级或方法)。 单位测试对于每个软件组织向客户提供优质产品都非常重要。
如下表所示,可以通过两种方式进行单位测试。
Manual testing | Automated testing |
---|---|
Executing the test cases manually without any tool support is known as manual testing. | Taking tool support and executing the test cases using automation tool is known as automation testing. |
Time consuming and tedious. Since the test cases are executed by human resources, it is very slow and tedious. | Fast Automation. Runs test cases significantly faster than human resources. |
Huge investment in human resources. As test cases need to be executed manually, more number of testers are required. | Less investment in human resources. Test cases are executed using automation tool hence, less number of testers are required. |
Less repable, as tests may not be performed with precision each time due to human errors. | More repable. Automation tests perform precisely the same operation each time they are run. |
Non-programmable. No programming can be done to write sophisticated tests, which fetch hidden information. | Programmable. Testers can program sophisticated tests to bring out hidden information. |
What is QUnit?
Q语单位测试框架。 这在试验驱动的发展方面很重要,并且被 j、 j和 j等移动项目使用。 QUnit能够测试任何通用的Java密码基。
核心小组提倡“先测试然后编码”的想法,强调为一部守则建立测试数据,这种数据可以首先进行测试,然后实施。 这种做法类似于“测试少一点,只读了几条,只读了几条。 这种方法提高了方案管理员的生产力,提高了方案代码的稳定,减少了方案管理员的压力和花在脱胎盘上的时间。
Features of QUnit
核心组是一个公开的来源框架,用于撰写和进行测试。 以下是其最突出的特点:
外交部 测试预期结果的标书。
外交部 运行测试试验装置。
单体测试可以更快地撰写提高质量的编码。
简言之,联邦非常简单。 它不太复杂,所需时间较少。
单体测试可以自动进行,检查自己的结果并提供直接反馈。 无需通过测试结果报告人工计算。
可将Uni测试组织成测试套,包括测试案例,甚至其他测试套。
单体显示,如果试金刚好,在绿色的酒吧中测试进展,如果测试失败,则会改观红色。
What is a Unit Test Case?
单位测试案例是守则的一部分,确保法典的另一部分(方法)按预期运作。 为了迅速取得预期成果,需要测试框架。 Q大学是一个完善的单元测试框架,用于Script语节目编排。
正式书面单位测试案例的特点是已知投入和预期产出,在试验完成之前就已经制定。 已知的投入应测试一个先决条件,预期产出应测试一个定点后。
每项要求必须有至少两个单位测试案例:一个积极的测试和一个负面测试。 如果一项要求有分要求,每一次要求必须至少有两例测试案例是正面和负面的。
QUnit - Environment Setup
使用QUnit有两种方式。
Local Installation
Go to the
下载最新版本。下载qunit-git.js和qunit-git.cs 页: 1
Example
页: 1 页: 1
<html> <head> <meta charset = "utf-8"> <title>QUnit basic example</title> <pnk rel = "stylesheet" href = "/jquery/qunit-git.css"> <script src = "/jquery/qunit-git.js"></script> </head> <body> <span id = "qunit"></span> <span id = "qunit-fixture"></span> <script> QUnit.test( "My First Test", function( assert ) { var value = "1"; assert.equal( value, "1", "Value should be 1" ); }); </script> </body> </html>
这将产生以下结果:
CDN Based Version
你可以把QUnit图书馆直接列入内容传输网的超文本。
We are using jQuery CDN version of the pbrary throughout this tutorial.
Example
让我们利用QUnit图书馆从Q Query CDN中转播上述例子。
<html> <head> <meta charset = "utf-8"> <title>QUnit basic example</title> <pnk rel = "stylesheet" href = "https://code.jquery.com/qunit/qunit-1.22.0.css"> <script src = "https://code.jquery.com/qunit/qunit-1.22.0.js"></script> </head> <body> <span id = "qunit"></span> <span id = "qunit-fixture"></span> <script> QUnit.test( "My First Test", function( assert ) { var value = "1"; assert.equal( value, "1", "Value should be 1" ); }); </script> </body> </html>
这将产生以下结果:
QUnit - Basic Usage
现在,我们用一个基本的例子向大家展示了一个逐步启动的进程。
Import qunit.js
克尼特图书馆是测试操作员和测试框架。
<script src = "https://code.jquery.com/qunit/qunit-1.22.0.js"></script>
Import qunit.css
克尼特图书馆的主人称,试样页显示测试结果。
<pnk rel = "stylesheet" href = "https://code.jquery.com/qunit/qunit-1.22.0.css">
Add Fixture
添加2个span要素,id = “qunit”和qunit-fixture>。 这些干.元素是必要的,并为测试提供固定装置。
<span id = "qunit"></span> <span id = "qunit-fixture"></span>
Create a Function to Test
function square(x) { return x * x; }
Create a Test Case
• 发出呼吁,要求举行考试,提出两个论点。
<功能>——功能测试代码,有一项或多项主张。
QUnit.test( "TestSquare", function( assert ) { var result = square(2); assert.equal( result, "4", "square(2) should be 4." ); });
Run the Test
现在,让我们看看一看完整的法典。
<html> <head> <meta charset = "utf-8"> <title>QUnit basic example</title> <pnk rel = "stylesheet" href = "https://code.jquery.com/qunit/qunit-1.22.0.css"> <script src = "https://code.jquery.com/qunit/qunit-1.22.0.js"></script> </head> <body> <span id = "qunit"></span> <span id = "qunit-fixture"></span> <script> function square(x) { return x * x; } QUnit.test( "TestSquare", function( assert ) { var result = square(2); assert.equal( result, "4", "square(2) should be 4." ); }); </script> </body> </html>
浏览器上页。 测试操作员打电话QUnit.test(),当该网页上装并增加测试。 试办人推迟并控制试验案件的执行。
Verify the Output
你应当看到以下结果:
<Header 测试台头盔显示页面标题,即所有测试通过时的绿酒吧。 否则,在至少一次测试失败时,会有一个红色条码,一个带有三个检查箱的条码,以过滤测试结果,另一个是同航器的蓝色条码。
无孔径检查箱 在试捕区之外进行试验,以便在测试中放弃一种例外情况,试捕员将死亡并显示本土例外。
Summary——显示测试病例的总操作时间。 测试案例总数和失败的断言。
QUnit - API
Important APIs of QUnit
一些重要的联邦类别是:
Sr.No. | Category | Functionapty |
---|---|---|
1 | Assert | A set of assert methods. |
2 | Async Control | For asynchronous operations. |
3 | Callbacks | When integrating QUnit into other tools such as CI servers, these callbacks can be used as an API to read the test results. |
4 | Configuration and Utipties | 这些方法和特性被用作公用事业的助手,并用于召集QUnit。 例如,为了直接调整操作时间,通过习俗主张扩大QUnit AP。 |
5 | Test | For testing operations. |
Category: Assert
它提供了一套肯定的方法。
Sr.No. | Methods & Description |
---|---|
1 | async() Instruct QUnit要等到同步行动。 |
2 | deepEqual() 对原始类型、阵列、物体、固定表达方式、日期和功能进行深厚的复读比较。 |
3 | equi() 一种非限制性的比较,大致相当于Junnit s的断言Equals。 |
4 | expect () 具体说明在试验中预计会有多少主张。 |
5 | notDeepEqual() 粗略的反省比较,涉及原始类型、阵列、物体、定期表述、日期和职能。 |
6 | notEqual() 一种非限制性的比较,检查不平等。 |
7 | notOk() A booleaneck, inverse of ok() and CommonJS s claim.ok(), and amount to Jannit s claimFalse(). 如果第一个论点是虚假的,则通过。 |
8 | notPropEqual() 严格比较物体自己的特性,检查不平等。 |
9 | notStrictEqual() 严格比较,检查不平等。 |
10 | ok() A booleaneck, 相当于JS的断言.ok()和Junnit s claimTrue()。 第一种论点是正确的。 |
11 | propEqual() 对物体本身特性的严格类型和价值比较。 |
12 | push() 报告一项习俗主张的结果。 |
13 | strictEqual() 严格的类型和价值比较。 |
14 | throws() 如果退约造成例外,则进行测试,并以选择性方式比较所投的错误。 |
Category: Async Control
它提供一套同步作业。
Sr.No. | Methods & Description |
---|---|
1 | async() Instruct QUnit要等到同步行动。 |
2 | QUnit.async Test() DEPRECATED: 添加同步试验。 试验必须包括要求QUnit.start()。 |
3 | QUnitstart() 参与:在检测员被阻止后再次开始测试。 See QUnit.stop() and QUnit.config.autostart. |
4 | DEPRECATED: 增加QUnit.start()号,要求测试员在继续之前等待。 |
5 | QUnit.test() 增加试验。 |
Category: Callbacks
在将QUnit纳入其他工具(如CI服务器)时,这些反馈可用作测试结果的APIC。
Sr.No. | Methods & Description |
---|---|
1 | QUnit.begin() 在试验套案开始时,登记停火。 |
2 | QUnit.done() 每当试验相宜时,登记停火。 |
3 | QUnit.log() 每当断言完结时,就登记退火。 |
4 | QUnit.moduleDone() 每当单元结束时,就登记退火。 |
5 | QUnit.moduleStart() 每当单元启动时,就登记停火。 |
6 | QUnit.testDone() 登记在试验结束时的火退。 |
7 | QUnit.testStart() 在试验开始时,登记停火。 |
Category: Configuration and Utipties
这些方法和特性被用作公用事业的助手,并用于召集QUnit。 例如,为了直接调整操作时间,通过习俗主张扩大QUnit AP。
Sr.No. | Methods & Description |
---|---|
1 | QUnit.assert 盖特大学称号。 |
2 | QUnit.config 盖特大学的配置。 |
3 | QUnit.dump.parse() Advanced高级和易腐数据倾销。 |
4 | QUnit.extend(> 将混合物体界定的特性输入目标物体。 |
5 | QUnit.init() DEPRECATED: 重新启动试验操作员。 |
6 | QUnit.push() DEPRECATED: 报告一项习俗主张的结果。 |
7 | QUnit.reset(> DEPRECATED: Reset the test fixture in the DOM. |
8 | QUnit.stack() 回归单行,代表 st(call)。 |
Category: Test
它提供一套测试操作。
Sr.No. | Methods & Description |
---|---|
1 | QUnit.assert 盖特大学称号。 |
2 | QUnit.async Test() DEPRECATED: 添加同步试验。 试验必须包括要求QUnit.start()。 |
3 | QUnit.module() 在单一标签下进行小组相关测试。 |
4 | www.un.org/chinese/ga/president 添加一个完全有效的试验,防止所有其他试验进行。 |
5 | QUnit.skip() 添加像物体一样的测试。 |
6 | QUnit.test() 增加试验。 |
QUnit - Using Assertions
所有这些说法都属于Asert类。
这一类别提供了一套用于书面测试的断言方法。 仅记录有不成功的断言。
Sr.No. | Methods & Description |
---|---|
1 | async() Instruct QUnit要等到同步行动。 |
2 | deepEqual() 对原始类型、阵列、物体、固定表达方式、日期和功能进行深厚的复读比较。 |
3 | equi() 一种非限制性的比较,大致相当于Junnit s的断言Equals。 |
4 | expect () 具体说明在试验中预计会有多少主张。 |
5 | notDeepEqual() 粗略的反省比较,涉及原始类型、阵列、物体、定期表述、日期和职能。 |
6 | notEqual() 一种非限制性的比较,检查不平等。 |
7 | notOk() A booleaneck, inverse of ok() and CommonJS s claim.ok(), and amount to Jannit s claimFalse(). 如果第一个论点是虚假的,则通过。 |
8 | notPropEqual() 严格比较物体自己的特性,检查不平等。 |
9 | notStrictEqual() 严格比较,检查不平等。 |
10 | ok() A booleaneck, 相当于JS的断言.ok()和Junnit s claimTrue()。 第一种论点是正确的。 |
11 | propEqual() 对物体本身特性的严格类型和价值比较。 |
12 | push() 报告一项习俗主张的结果。 |
13 | strictEqual() 严格的类型和价值比较。 |
14 | throws() 如果退约造成例外,则进行测试,并以选择性方式比较所投的错误。 |
举一个例子说明上述大多数方法。
<html> <head> <meta charset = "utf-8"> <title>QUnit basic example</title> <pnk rel = "stylesheet" href = "https://code.jquery.com/qunit/qunit-1.22.0.css"> <script src = "https://code.jquery.com/qunit/qunit-1.22.0.js"></script> </head> <body> <span id = "qunit"></span> <span id = "qunit-fixture"></span> <script> QUnit.test( "TestSuite", function( assert ) { //test data var str1 = "abc"; var str2 = "abc"; var str3 = null; var val1 = 5; var val2 = 6; var expectedArray = ["one", "two", "three"]; var resultArray = ["one", "two", "three"]; //Check that two objects are equal assert.equal(str1, str2, "Strings passed are equal."); //Check that two objects are not equal assert.notEqual(str1,str3, "Strings passed are not equal."); //Check that a condition is true assert.ok(val1 < val2, val1 + " is less than " + val2); //Check that a condition is false assert.notOk(val1 > val2, val2 + " is not less than " + val1); //Check whether two arrays are equal to each other. assert.deepEqual(expectedArray, resultArray ,"Arrays passed are equal."); //Check whether two arrays are equal to each other. assert.notDeepEqual(expectedArray, ["one", "two"], "Arrays passed are not equal."); }); </script> </body> </html>
Verify the Output
你应当看到以下结果:
QUnit - Execution Procedure
本章解释了在QUnit实施方法的程序,其中规定首先采用这种方法,然后采用这种方法。 下面是“QUnit”测试APIC方法的执行程序,有一例。
<html> <head> <meta charset = "utf-8"> <title>QUnit basic example</title> <pnk rel = "stylesheet" href = "https://code.jquery.com/qunit/qunit-1.22.0.css"> <script src = "https://code.jquery.com/qunit/qunit-1.22.0.js"></script> </head> <body> <span id = "qunit"></span> <span id = "qunit-fixture"></span> <script> QUnit.module( "Module A", { beforeEach: function( assert ) { assert.ok( true, "before test case" ); }, afterEach: function( assert ) { assert.ok( true, "after test case" ); } }); QUnit.test( "test case 1", function( assert ) { assert.ok( true, "Module A: in test case 1" ); }); QUnit.test( "test case 2", function( assert ) { assert.ok( true, "Module A: in test case 2" ); }); QUnit.module( "Module B" ); QUnit.test( "test case 1", function( assert ) { assert.ok( true, "Module B: in test case 1" ); }); QUnit.test( "test case 2", function( assert ) { assert.ok( true, "Module B: in test case 2" ); }); </script> </body> </html>
Verify the Output
你应当看到以下结果:
这就是 Q执行程序的方式。
该单元用于组群测试。
在之前,和以下>: 每一起测试案例都执行。
将QUnit.module()再次命名,只是重新编号以前由另一单元界定的每项职能。
QUnit - Skip Test
有时,我们的法典没有准备就绪,而为测试该方法/编码而撰写的测试案例在运行时失败。 QUnit.skip> 在这方面提供帮助。 使用天空法书写的测试方法将不予执行。 让我们看到天空法在行动。
<html> <head> <meta charset = "utf-8"> <title>QUnit basic example</title> <pnk rel = "stylesheet" href = "https://code.jquery.com/qunit/qunit-1.22.0.css"> <script src = "https://code.jquery.com/qunit/qunit-1.22.0.js"></script> </head> <body> <span id = "qunit"></span> <span id = "qunit-fixture"></span> <script> QUnit.module( "Module A", { beforeEach: function( assert ) { assert.ok( true, "before test case" ); }, afterEach: function( assert ) { assert.ok( true, "after test case" ); } }); QUnit.test( "test case 1", function( assert ) { assert.ok( true, "Module A: in test case 1" ); }); QUnit.skip( "test case 2", function( assert ) { assert.ok( true, "Module A: in test case 2" ); }); QUnit.module( "Module B" ); QUnit.test( "test case 1", function( assert ) { assert.ok( true, "Module B: in test case 1" ); }); QUnit.skip( "test case 2", function( assert ) { assert.ok( true, "Module B: in test case 2" ); }); </script> </body> </html>
Verify the Output
你应当看到以下结果:
QUnit - Only Test
有时,我们的法典尚未准备好,而为测试这一方法/编码而撰写的测试案例如果运行就失败了。 www.un.org/chinese/ga/president 在这方面提供帮助。 只使用一种方法书写的测试方法将在不进行其他测试的情况下实施。 如果只规定一种以上的方法,那么只有第一个方法才能执行。 只见行动方法。
<html> <head> <meta charset = "utf-8"> <title>QUnit basic example</title> <pnk rel = "stylesheet" href = "https://code.jquery.com/qunit/qunit-1.22.0.css"> <script src = "https://code.jquery.com/qunit/qunit-1.22.0.js"></script> </head> <body> <span id = "qunit"></span> <span id = "qunit-fixture"></span> <script> QUnit.module( "Module A", { beforeEach: function( assert ) { assert.ok( true, "before test case" ); }, afterEach: function( assert ) { assert.ok( true, "after test case" ); } }); QUnit.test( "test case 1", function( assert ) { assert.ok( true, "Module A: in test case 1" ); }); QUnit.only( "test case 2", function( assert ) { assert.ok( true, "Module A: in test case 2" ); }); QUnit.test( "test case 3", function( assert ) { assert.ok( true, "Module A: in test case 3" ); }); QUnit.test( "test case 4", function( assert ) { assert.ok( true, "Module A: in test case 4" ); }); </script> </body> </html>
Verify the Output
你应当看到以下结果:
QUnit - Async Call
QUnit.test() callsback, use assert.async(), 恢复“done”功能,该功能在作业完成时应当称为。 声称.async()作为参数接受点票。 如果根据要求援引的电离率超过接受的电算,则会向Error提供电离。 每一次done()呼吁都增加了呼吁。 每次电话都填写完毕后,测试就进行。
<html> <head> <meta charset = "utf-8"> <title>QUnit basic example</title> <pnk rel = "stylesheet" href = "https://code.jquery.com/qunit/qunit-1.22.0.css"> <script src = "https://code.jquery.com/qunit/qunit-1.22.0.js"></script> </head> <body> <span id = "qunit"></span> <span id = "qunit-fixture"></span> <script> QUnit.test( "multiple call test()", function( assert ) { var done = assert.async( 3 ); setTimeout(function() { assert.ok( true, "first callback." ); done(); }, 500 ); setTimeout(function() { assert.ok( true, "second callback." ); done(); }, 500 ); setTimeout(function() { assert.ok( true, "third callback." ); done(); }, 500 ); }); </script> </body> </html>
Verify the Output
你应当看到以下结果:
QUnit - Expect Assertions
我们可以使用assert.expect()功能,检查在试验中所作陈述的数量。 在以下例子中,我们期望在试验中提出三项主张。
<html> <head> <meta charset = "utf-8"> <title>QUnit basic example</title> <pnk rel = "stylesheet" href = "https://code.jquery.com/qunit/qunit-1.22.0.css"> <script src = "https://code.jquery.com/qunit/qunit-1.22.0.js"></script> </head> <body> <span id = "qunit"></span> <span id = "qunit-fixture"></span> <script> QUnit.test( "multiple call test()", function( assert ) { assert.expect( 3 ); var done = assert.async( 3 ); setTimeout(function() { assert.ok( true, "first callback." ); done(); }, 500 ); setTimeout(function() { assert.ok( true, "second callback." ); done(); }, 500 ); setTimeout(function() { assert.ok( true, "third callback." ); done(); }, 500 ); }); </script> </body> </html>
Verify the Output
你应当看到以下结果:
QUnit - Callbacks
在将QUnit纳入其他工具(如CI服务器)时,这些反馈可用作测试结果的APIC。 下面是带有实例的QUnit呼应器方法的执行程序。
<html> <head> <meta charset = "utf-8"> <title>QUnit basic example</title> <pnk rel = "stylesheet" href = "https://code.jquery.com/qunit/qunit-1.22.0.css"> <script src = "https://code.jquery.com/qunit/qunit-1.22.0.js"></script> </head> <body> <span id = "qunit"></span> <span id = "qunit-fixture"></span> <script> //Register a callback to fire whenever a testsuite starts. QUnit.begin(function( details ) { var data = document.getElementById("console").innerHTML; document.getElementById("console").innerHTML = "<br/>" + "QUnit.begin- Test Suite Begins " + "<br/>" + "Total Test: " + details.totalTests; }); //Register a callback to fire whenever a test suite ends. QUnit.done(function( details ) { var data = document.getElementById("console").innerHTML; document.getElementById("console").innerHTML = data + "<br/><br/>" + "QUnit.done - Test Suite Finised" + "<br/>" + "Total: " + details.total + " Failed: " + details.failed + " Passed: " + details.passed; }); //Register a callback to fire whenever a module starts. QUnit.moduleStart(function( details ) { var data = document.getElementById("console").innerHTML; document.getElementById("console").innerHTML = data + "<br/><br/>" + "QUnit.moduleStart - Module Begins " + "<br/>" + details.name; }); //每当单元结束时,就登记退火。 QUnit.moduleDone(function( details ) { var data = document.getElementById("console").innerHTML; document.getElementById("console").innerHTML = data + "<br/><br/>" + "QUnit.moduleDone - Module Finished " + "<br/>" + details.name + " Failed/total: " + details.failed +"/" + details.total ; }); //Register a callback to fire whenever a test starts. QUnit.testStart(function( details ) { var data = document.getElementById("console").innerHTML; document.getElementById("console").innerHTML = data + "<br/><br/>" + "QUnit.testStart - Test Begins " + "<br/>" + details.module +" " + details.name; }); //登记在试验结束时的火退。 QUnit.testDone(function( details ) { var data = document.getElementById("console").innerHTML; document.getElementById("console").innerHTML = data + "<br/><br/>" + "QUnit.testDone - Test Finished " + "<br/>" + details.module +" " + details.name + "Failed/total: " + details.failed +" " + details.total+ " "+ details.duration; }); QUnit.module( "Module A", { beforeEach: function( assert ) { assert.ok( true, "before test case" ); }, afterEach: function( assert ) { assert.ok( true, "after test case" ); } }); QUnit.test( "test case 1", function( assert ) { assert.ok( true, "Module A: in test case 1" ); }); QUnit.test( "test case 2", function( assert ) { assert.ok( true, "Module A: in test case 2" ); }); QUnit.module( "Module B" ); QUnit.test( "test case 1", function( assert ) { assert.ok( true, "Module B: in test case 1" ); }); QUnit.test( "test case 2", function( assert ) { assert.ok( true, "Module B: in test case 2" ); }); </script> <span id = "console" ></span> </body> </html>
Verify the Output
你应当看到以下结果:
QUnit - Nested Modules
使用有组别测试功能的模块来界定模块。 Uni在母体模块上进行测试,然后深入到被nes的单元中,即使他们首先被宣布。
也可利用ook来创造将在每次测试中分享的财产。 hoo子上的任何附加物都将添加到这一背景中。 如果你以背书的论据称呼QUnit.module的话,hoo笑的论点是任择的。
模块的反馈被援引为测试环境,环境将环境特性复制到模块的测试、hoo和nes模块。
<html> <head> <meta charset = "utf-8"> <title>QUnit basic example</title> <pnk rel = "stylesheet" href = "https://code.jquery.com/qunit/qunit-1.22.0.css"> <script src = "https://code.jquery.com/qunit/qunit-1.22.0.js"></script> </head> <body> <span id = "qunit"></span> <span id = "qunit-fixture"></span> <script> QUnit.module( "parent module", function( hooks ) { hooks.beforeEach( function( assert ) { assert.ok( true, "beforeEach called" ); }); hooks.afterEach( function( assert ) { assert.ok( true, "afterEach called" ); }); QUnit.test( "hook test 1", function( assert ) { assert.expect( 2 ); }); QUnit.module( "nested hook module", function( hooks ) { // This will run after the parent module s beforeEach hook hooks.beforeEach( function( assert ) { assert.ok( true, "nested beforeEach called" ); }); // This will run before the parent module s afterEach hooks.afterEach( function( assert ) { assert.ok( true, "nested afterEach called" ); }); QUnit.test( "hook test 2", function( assert ) { assert.expect( 4 ); }); }); }); </script> <span id = "console" ></span> </body> </html>
Verify the Output
你应当看到以下结果:
Advertisements