Я написал небольшую страницу, чтобы узнать BDD/TDD. Именно в http://duolingo.howyousay.it/link.htmlКак я могу проверить часть кода, которая выполняется до onready?
Мои тесты (только один файл в данный момент) находятся на http://duolingo.howyousay.it/tests/test.html?coverage&hidepassed&noglobals
Я сумел получить покрытие кода 100% за 5 строк, за исключением http://duolingo.howyousay.it/duolingo_link_fixer.js
1 var DuolingoLinkFixer = function() {
2 this.data = {};
3 var self = this;
4
5 document.onreadystatechange = function() {
* 6 self.init();
7 }
8 };
9
10 DuolingoLinkFixer.prototype.init = function() {
* 11 if (document.readyState == "complete") {
* 12 this.setOriginalUrl();
* 13 this.setAlternateText();
* 14 this.setFixedUrl();
15 }
16 }
линий 6 и 11-14 не проходят тестирование, но если я их удалю, код не работает. Я использую QUnit, QUnit-BDD и Blanket.js. Как я могу проверить часть кода, которая работает до onready
, поскольку кажется, что тесты запускаются только после onready
?
Мой тестовый код в настоящее время начинается так:
describe("DuolingoLinkFixer", function() {
describe("new", function() {
it("should create a new instance of DuolingoLinkFixer", function() {
expect(new DuolingoLinkFixer instanceof DuolingoLinkFixer).to.be.true();
});
});
});
Это источник для моего HTML тестовой страницы:
<!DOCTYPE html>
<html>
<head>
<title>Duolingo JavaScript tests</title>
<script type="text/javascript" src="/lib/jquery/jquery-3.0.0.js"></script>
<script type="text/javascript">
$.holdReady(true);
</script>
<link type="text/css" rel="stylesheet" href="/lib/qunit/qunit-1.23.1.css">
<script type="text/javascript" src="/lib/qunit/qunit-1.23.1.js"></script>
<script type="text/javascript" src="/lib/qunit-bdd/qunit-bdd.js"></script>
<script type="text/javascript" src="/lib/blanket.js/blanket.min.js"></script>
<script type="text/javascript" data-cover src="../url_helper.js"></script>
<script type="text/javascript" data-cover src="../duolingo_link_fixer.js"></script>
<script type="text/javascript" src="test_url_helper.js"></script>
<script type="text/javascript" src="test_duolingo_link_fixer.js"></script>
</head>
<body>
<div id="qunit"></div>
</body>
</html>
Я попытался добавить JQuery-х $.holdReady(true);
как предложено в другой должности, но Бесполезный» t помочь. Мне не нужно использовать jQuery, поэтому я стараюсь избегать этого для этого проекта.
Первое, что я хотел бы сделать, это добавить некоторые распечатки с помощью 'console.log (« here I am »);'. Затем вы сможете лучше сосредоточиться. – FDavidov
Это может быть интересно сделать ... но ... Возможно, вы сможете создать готовое событие и испустить событие в верхней части страницы ... idk синтаксис. возможно, что-то вроде: var e = document.createEvent ('ready'); e.emitChange(); снова не уверен в точном синтаксисе –
@FDavidov Я нашел это в документах: https://api.qunitjs.com/QUnit.config/ В нем говорится, что вы можете отключить автозапуск и запустить его вручную _after_ ' onready', а не сразу, как только «onready» срабатывает. Я не разработал, если можно вручную запустить его перед запуском 'onready'. –