Тест Мокки, возвращающий другой ответ по сравнению с js bin - PullRequest
0 голосов
/ 21 сентября 2019

Я пишу функцию, чтобы попытаться удалить тег <noscript> из строки html.

Я написал свою функцию ниже:

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>");
  });

Я получаю эторезультат: enter image description here

Эта же функция работает в JSBin. Я вышел из системы, ответ - есть идеи, почему она работает на JSBin, но Mocha / Chai возвращает ошибку?

PS: В случае, если это поможет, это снимок кода, который я написал в редакторе (игнорируйте комментарий о <script>, потому что я планирую удалить его далее): enter image description here

1 Ответ

1 голос
/ 21 сентября 2019

Это не тесты.На изображении, которое вы разместили, у вас есть:

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

Использование substr вместо substring.Второй аргумент substr означает количество извлекаемых символов, а второй аргумент substring - это индекс первого исключаемого символа.

substr: 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.

...