[英]javascript indexOf strange behavior
在為我的javascript程序編寫一段測試代碼時,我發現了一個奇怪的無法解釋的行為。 我正在比較res.body的輸出以檢查它是否包含字符串。
更准確地說,我正在檢查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。
因此,我嘗試通過減少No。 匹配中的字符數,直到我將搜索字符串減少為僅包含“ chann”(即省略“ el”)后,它仍然失敗。
但是,如果我亂扔垃圾並進行相同的練習,則不會發生這種情況。 例如,下面的方法可以正常工作。
> 'Error: invalid channel'.indexOf('channel')
15
我繼續檢查了res.body的類型,它顯示為字符串,而不是任何對象。
> typeof res.body
'string'
>
有人遇到過類似的問題嗎? 還是對此有一個解釋?
編輯當我重新嘗試由mocha + chai框架生成的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 });
您的res.body
擁有3 n
s的channel
。
“錯誤:頻道無效”
這意味着chann
匹配,但是channe
不會因為額外的n
。
在第一段代碼中,“通道”具有3 n。 這就是為什么它匹配“ chann”而不匹配“ channe”的原因。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.