Я придумал тот же вопрос, и после навигации и поиска ответов, которые на самом деле не подходят, вот что я закончил, чтобы решить аналогичную проблему.
Проблема: «У меня есть виджет, поведение которого я хочу проверить, чтобы убедиться, что он работает, как и ожидалось, некоторые методы вызываются изнутри, потому что они должны решать внутреннее поведение, выставлять их как публичные не имеет смысла, потому что они Если вы не будете вызывать извне, тестирование открытых методов означает, что вы не будете тестировать внутренние компоненты виджета, так что, наконец, я могу сделать? "
Решение: "Создайте тестовый виджет, который предоставляет интересующие вас методы тестирования, и используйте их в qunit, вот пример:"
// Namespaces to avoid having conflicts with other things defined similarly
var formeditortest = formeditortest || {};
// widget that inherits from the container I want to test
$.widget( "app.testcontainer", $.app.container, {
executeDrop: function(drop, helper) {
var self = this;
self._executeDrop(drop, helper);
}
});
// Test cases
formeditortest.testDropSimple = function(assert) {
var container = $("<div />");
container.testcontainer();
container.testcontainer("drop", 0, 3);
assert.equal(true, $(innerDiv.children()[0]).hasClass("droparea"));
});
QUnit.test(name, function( assert ) {
formeditortest.testDropSimple(assert);
formeditortest.testDropBottom(assert);
});
Используя этот метод, унаследованный тестконтейнер может иметь подготовку, необходимую для тестирования элементов, и тогда qunit будет обрабатывать тест, это решит мою проблему, надеюсь, это сработает для кого-то еще, у которого есть проблемы с подходом к такого рода тестам. *
Критика? добро пожаловать комментировать, я хочу улучшить это, если я делаю что-то глупо !!!