簡體   English   中英

javascript indexOf奇怪的行為

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM