与 js bin 相比,Mocha 测试返回不同的答案

Mocha test returning different answer when compared to js bin

我正在编写一个函数来尝试从 html.

的字符串中删除 <noscript> 标签

我在下面写了我的函数:

function removeNoScript(str){
    var start = str.search("<noscript>");
    var end = str.search("</noscript>") + "</noscript>".length;

    var result = str.replace(str.substring(start,end),"");
    return result;
}

let result = removeNoScript("<p>first word</p><noscript>This shows up</noscript><p>second word</p>");

console.log(result)

这工作得很好,但是当我 运行 使用 chai 和 mocha 对此进行单元测试时(如下):

it("removes <noscript> in-between markup", () => {
    removeScripts(
      "<p>first word</p><noscript>This shows up</noscript><p>second word</p>"
    ).should.equal("<p>first word</p><p>second word</p>");
  });

我收到这个结果:

相同的功能在 JSBin 中工作,我注销了响应 - 知道为什么它在 JSBin 上工作但 Mocha/Chai 返回错误吗?

P.S:如果有帮助,这是我在编辑器中编写的代码的快照(忽略关于 <script> 的评论,因为我打算接下来删除它):

这不是测试。在您发布的图片中,您有:

result = str.replace(str.substr(start, end),"");

使用 substr 而不是 substringsubstr 的第二个参数表示要提取的字符数,而 substring 的第二个参数是要排除的第一个字符的索引。

子字符串:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/substr

子字符串:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/substring

由于 substr 是旧版本,您可能希望坚持使用 substring