我在爲我的JavaScript程序編寫一段測試代碼時發現了一個奇怪的無法解釋的行爲。我正在比較res.body的輸出以檢查它是否包含字符串。javascript indexOf奇怪的行爲
更確切地說,我在檢查res.body是否包含字符串'channel'。
即使輸出確實包含該字符串,測試用例總是失敗。我在調試模式下運行該程序,以檢查其失敗的原因。至少可以說,結果令人費解。
> res.body
'Error: invalid channnel'
> res.body.indexOf('channel')
-1
> res.body.indexOf('channe')
-1
> res.body.indexOf('chann')
15
>
如果我嘗試在res.body,其價值是「錯誤:無效通道」檢查「通道」的的indexOf,我應該得到一個積極的價值,但它給-1。
所以,我試圖通過減少沒有。在搜索字符串中只包含'chann',即省略'el',它仍然失敗。
但是這種行爲不會發生,如果我採取字符串litteral並做相同的練習。例如,下面的作品完美。
> 'Error: invalid channel'.indexOf('channel')
15
我繼續檢查res.body的類型,它顯示爲字符串,而不是任何對象。
> typeof res.body
'string'
>
有沒有人曾經遇到類似的問題?或者有解釋嗎?
編輯 它發生在我通過mocha + chai框架生成res.body時。完整的代碼如下:
58 it ("Should fail with 400, if invalid channel", function(done) {
59 chai.request(app).post('/campaigns/js')
60 .send(samples.type0.invalidChannel)
61 .end(function(err, res) {
62 console.log("response:", res.body);
63 expect(res).to.have.status(400);
>64 debugger;
65 expect(res.body).to.contain('channel');
66 return done();
67 });
68 });
* cha ** nnn ** el *與* cha ** nn ** el *不一樣。 –
''錯誤:無效channnel''渠道拼寫錯誤 – z0mBi3