Я использую Teaspoon-Jasmine и создаю прибор для проверки моих навигационных ссылок Pagy Pagination.
Я скопировал выходной HTML-код из представления, но мой прибор, похоже, получает приведенную ниже ошибку во время тестирования, но при запуске на реальной странице без фиксации все работает нормально. Я думаю, что что-то не так с тем, как создается прибор.
Кто-нибудь знает, почему анализатор инициализации не может правильно проанализировать json?
var custom_html =
`<div id='custom-pagination'>
<nav id="pagy-d132b15ba09f3e4f847de0a869486f19c77e4320" class="pagy-bootstrap-nav-js pagination" role="navigation" aria-label="pager">
</nav>
<script type="application/json" class="pagy-json">["nav","pagy-d132b15ba09f3e4f847de0a869486f19c77e4320",{"before":"\u003cul class=\"pagination\"\u003e\u003cli class=\"page-item prev disabled\"\u003e\u003ca href=\"#\" class=\"page-link\"\u003e\u0026lsaquo;\u0026nbsp;Prev\u003c/a\u003e\u003c/li\u003e","link":"\u003cli class=\"page-item\"\u003e\u003ca href=\"__pagy_page__\" class=\"page-link\" \u003e__pagy_page__\u003c/a\u003e\u003c/li\u003e","active":"\u003cli class=\"page-item active\"\u003e\u003ca href=\"__pagy_page__\" class=\"page-link\" \u003e__pagy_page__\u003c/a\u003e\u003c/li\u003e","gap":"\u003cli class=\"page-item gap disabled\"\u003e\u003ca href=\"#\" class=\"page-link\"\u003e\u0026hellip;\u003c/a\u003e\u003c/li\u003e","after":"\u003cli class=\"page-item next\"\u003e\u003ca href=\"2\" class=\"page-link\" rel=\"next\" aria-label=\"next\"\u003eNext\u0026nbsp;\u0026rsaquo;\u003c/a\u003e\u003c/li\u003e\u003c/ul\u003e"},{"0":["1",2,3]},null]</script>
</div>
` ;
fixture.set(custom_html);
SyntaxError: ошибка синтаксического анализа JSON: ожидается "}" в
http://localhost:3000/assets/pagy.self-9549c0030c0d4b8edb86c4946359bd81e7b71259f6f34f7c09f14e41a264cbe6.js?body=1?body=1
(строка 9)
Тестирование Rspec / Teaspoon-Jasmine
describe("addOnClick()", function(){
beforeEach(function(){
fixture.set(custom_html);
console.log(fixture.el);
PagyCustom = new Helpers.Pagy.SearchForm("#custom-pagination");
PagyCustom.init();
})
});
Функция Pagy init:
Pagy.init = function(arg){
var target = arg instanceof Event || arg === undefined ? document : arg,
jsonTags = target.getElementsByClassName('pagy-json');
for (var i = 0, len = jsonTags.length; i < len; i++) {
var args = JSON.parse(jsonTags[i].innerHTML);
Pagy[args.shift()].apply(null, args);
}
};