nodejs Assert中equal(),strictEqual(),deepEqual(),strictDeepEqual()比較
1、equal()
equal(actual,expected[,message])
相當于使用 == 運算符比較兩個參數(shù)值actual和expected是否相等,如果相等不返回任何值,如果不相等則返回帶有message屬性的AssertionError,若message為undefined,則為默認的錯誤信息。
var assert = require('assert');
assert.equal('1','1');//通過 '1' == '1'
assert.equal('1',1);//通過,'1' == 1
assert.equal('q','q');//通過
assert.equal('abc','abc');//通過
assert.equal('a','b');//不通過,拋出AssertionError
assert.equal([1,2],[1,2]);//不通過,不能比較數(shù)組
assert.equal({a:'string'},{a:'string'});//不通過,不能比較json數(shù)據(jù)等
== 運算符只是數(shù)值相等,并不比較類型相等
equal()方法不能比較數(shù)組,json等數(shù)據(jù)類型的數(shù)據(jù),換句話說即不進行深度比較,數(shù)組和json數(shù)據(jù)的子對象不進行比較。
2、strictEqual()
strictEqual(actual,expected[,message])
從字面意思來看,就是equal()方法的嚴格版本,相當于===全等運算符,不僅比較數(shù)據(jù)值是否相等,還比較數(shù)據(jù)類型是否相同。跟equal()方法最大的不同就是這點。
var assert = require('assert');
assert.strictEqual('1',1);//不通過
assert.strictEqual(1,1);//通過
assert.strictEqual('a','a');//通過
assert.equal('abc','abc');//通過
assert.equal('a','b');//不通過,拋出AssertionError
assert.equal([1,2],[1,2]);//不通過,不能比較數(shù)組
assert.equal({a:'string'},{a:'string'});//不通過,不能比較json數(shù)據(jù)等
可以看到,這跟equal()方法得出的結(jié)果是不同的,比較要嚴格一些,其他地方都相同。
3 deepEqual()
deepEqual(actual,expected[,message])
前面不管是equal()方法還是strictEqual()都不能進行深度比較,對數(shù)組或者json數(shù)據(jù)格式的數(shù)據(jù)不能比較相同與否,使用此方法將可以完美解決這個問題。
var assert = require('assert');
assert.deepEqual([1,2],[1,2]);//通過,數(shù)組比較
assert.deepEqual({a:'1'},{a:'1'});//通過
assert.deepEqual([[1,2],[2]],[[1,2],[2]]);//通過,多維數(shù)組
assert.deepEqual({a:{b:1}},{a:{b:1}});//通過
assert.deepEqual(1,'1');//通過
assert.deepEqual([1],['1']);//通過
deepEqual()方法能夠比較數(shù)組和json等數(shù)據(jù),也能比較一般數(shù)據(jù),能夠進行更為深層次的數(shù)據(jù)比較。
deepEqual()方法比較并不嚴格,相當于 == 等于符號,只比較數(shù)值,不比較類型
4 strictDeepEqual()
strictDeepEqual(actual,expected[,message])
跟strictEqual()方法相似,相當于=== 全等運算符,不同的是能夠比較數(shù)組、json數(shù)據(jù)等深層的數(shù)據(jù)。
var assert = require('assert');
assert.deepEqual([1,2],[1,2]);//通過,數(shù)組比較
assert.deepEqual({a:'1'},{a:'1'});//通過
assert.deepEqual([[1,2],[2]],[[1,2],[2]]);//通過,多維數(shù)組
assert.deepEqual({a:{b:1}},{a:{b:1}});//通過
assert.deepEqual(1,'1');//不通過,類型錯誤
assert.deepEqual([1],['1']);//不通過 ,類型錯誤
deepStrictEqual()方法比deepEqual()更為嚴格,其他都相同。都能進行深層比較。
5 其他方法
assert模塊中還有很多其他很有用的方法,下面列舉幾個,具體的請看
assert.notEqual(actual,expected[,message])
assert.notStrictEqual(actual,expected[message])
assert.ifError(value)
assert.fail(message)
相關文章
nodejs爬蟲抓取數(shù)據(jù)亂碼問題總結(jié)
這篇文章主要給大家總結(jié)了下nodejs爬蟲抓取數(shù)據(jù)亂碼問題的相關資料,需要的朋友可以參考下2015-07-07
Node.js實現(xiàn)壓縮與解壓數(shù)據(jù)
這篇文章介紹了Node.js實現(xiàn)壓縮與解壓數(shù)據(jù)的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-07-07
node.js中的querystring.unescape方法使用說明
這篇文章主要介紹了node.js中的querystring.unescape方法使用說明,本文介紹了querystring.unescape的方法說明、語法、接收參數(shù)、使用實例和實現(xiàn)源碼,需要的朋友可以參考下2014-12-12
Nodejs如何進行性能監(jiān)控和分析優(yōu)化
Node.js應用可能因為高并發(fā)、內(nèi)存泄漏、CPU密集型任務等原因?qū)е滦阅芟陆?影響用戶體驗甚至系統(tǒng)穩(wěn)定性,通過性能監(jiān)控和分析,我們可以及時發(fā)現(xiàn)潛在問題,并針對性地進行優(yōu)化,確保系統(tǒng)正常運行且具備良好的性能表現(xiàn)2024-06-06
npm安裝sharp出現(xiàn)的問題詳解(安裝失敗的問題及解決)
這篇文章主要給大家介紹了關于npm安裝sharp出現(xiàn)的問題(安裝失敗的問題及解決)的相關資料,sharp包是基于node.js的高性能圖片處理器,文中通過代碼介紹的非常詳細,需要的朋友可以參考下2023-11-11
NodeJs內(nèi)存占用過高的排查實戰(zhàn)記錄
這篇文章主要給大家介紹了關于NodeJs內(nèi)存占用過高的排查實戰(zhàn)記錄,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-05-05

