nodejs Assert中equal(),strictEqual(),deepEqual(),strictDeepEqual()比較
1、equal()
equal(actual,expected[,message])
相當(dāng)于使用 == 運(yùn)算符比較兩個(gè)參數(shù)值actual和expected是否相等,如果相等不返回任何值,如果不相等則返回帶有message屬性的AssertionError,若message為undefined,則為默認(rèn)的錯(cuò)誤信息。
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ù)等
== 運(yùn)算符只是數(shù)值相等,并不比較類型相等
equal()方法不能比較數(shù)組,json等數(shù)據(jù)類型的數(shù)據(jù),換句話說即不進(jìn)行深度比較,數(shù)組和json數(shù)據(jù)的子對(duì)象不進(jìn)行比較。
2、strictEqual()
strictEqual(actual,expected[,message])
從字面意思來看,就是equal()方法的嚴(yán)格版本,相當(dāng)于===全等運(yùn)算符,不僅比較數(shù)據(jù)值是否相等,還比較數(shù)據(jù)類型是否相同。跟equal()方法最大的不同就是這點(diǎn)。
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é)果是不同的,比較要嚴(yán)格一些,其他地方都相同。
3 deepEqual()
deepEqual(actual,expected[,message])
前面不管是equal()方法還是strictEqual()都不能進(jìn)行深度比較,對(duì)數(shù)組或者json數(shù)據(jù)格式的數(shù)據(jù)不能比較相同與否,使用此方法將可以完美解決這個(gè)問題。
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ù),能夠進(jìn)行更為深層次的數(shù)據(jù)比較。
deepEqual()方法比較并不嚴(yán)格,相當(dāng)于 == 等于符號(hào),只比較數(shù)值,不比較類型
4 strictDeepEqual()
strictDeepEqual(actual,expected[,message])
跟strictEqual()方法相似,相當(dāng)于=== 全等運(yùn)算符,不同的是能夠比較數(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');//不通過,類型錯(cuò)誤 assert.deepEqual([1],['1']);//不通過 ,類型錯(cuò)誤
deepStrictEqual()方法比deepEqual()更為嚴(yán)格,其他都相同。都能進(jìn)行深層比較。
5 其他方法
assert模塊中還有很多其他很有用的方法,下面列舉幾個(gè),具體的請(qǐng)看
assert.notEqual(actual,expected[,message])
assert.notStrictEqual(actual,expected[message])
assert.ifError(value)
assert.fail(message)
相關(guān)文章
nodeJs項(xiàng)目在阿里云的簡(jiǎn)單部署
這篇文章主要為大家詳細(xì)介紹了nodeJs項(xiàng)目在阿里云的簡(jiǎn)單部署,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-11-11ajax +NodeJS 實(shí)現(xiàn)圖片上傳實(shí)例
本篇文章主要介紹了ajax +NodeJS 實(shí)現(xiàn)圖片上傳實(shí)例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06使用pify實(shí)現(xiàn)Node.js回調(diào)函數(shù)的Promise化
使用pify庫,你可以非常便利地將任何遵循Node.js回調(diào)風(fēng)格的函數(shù)轉(zhuǎn)換為返回Promise對(duì)象的函數(shù),從而使得你的異步代碼更加清晰和易于維護(hù),本文通過豐富的代碼示例引導(dǎo)你如何有效地利用pify,需要的朋友可以參考下2024-06-06