0
以下代碼片段非常簡單(從https://mochajs.org/#synchronous-code)。它感覺很愚蠢,但爲什麼[1,2,3]
的計算結果與undefined
一起使用,而不是用於myArray
變量?爲什麼我的mocha /應該拋出Array測試失敗?
Array
#indexOf()
1) Should return -1 when the value is not present
1) Array #indexOf() Should return -1 when the value is not present:
TypeError: Cannot read property 'indexOf' of undefined
... Error trace just points the line where it fails, nothing else ...
我一個讚賞這一令人不安的,但肯定容易回答,問題做了解釋:
var assert = require('assert') // "mocha": "^3.0.2"
var should = require('should') // "should": "^11.1.0"
describe('Array', function() {
describe('#indexOf()', function() {
var myArray = [1, 2, 3]
it('Should return -1 when the value is not present', function() {
myArray.indexOf(0).should.equal(-1) // a - success
[1, 2, 3].indexOf(0).should.equal(-1) // b - fails test
})
})
})
當我運行測試,如下行「B」失敗。乾杯。
這個問題解釋了爲什麼','應該使用函數表達式時使用。在這種情況下,每個'something.should.whatever()'返回一個對象。的確,應該擴展'something'的Object.prototype。無論如何,當「a」和「b」交換時,爲什麼測試通過? –
就像我說過的,我不是專家們對各種運行時如何解析javascript的問題,你問爲什麼它失敗了,這是因爲你沒有終止你的聲明。最佳做法是使用分號,我的猜測是當文字第二次摺疊它並嘗試做一個屬性查找時,因爲它看到'[xxx]'這是查找對象屬性的一種方法。 **其猜測** – Nix