Я ищу, чтобы написать несколько тестов, которые проверяют проводку между представлениями Backbone и их моделями. Я по существу хочу загрузить свое представление с помощью модели и убедиться, что все персиковое (события правильно запускаются/обрабатываются, элементы добавляются в DOM и т. Д.). Я рассматриваю это как отличное от тестирования приемки/функциональности/e2e, но больше, чем простые модульные тесты. Другими словами, я не ищу, чтобы написать:Тестирование компонентов/интеграции Магистральные представления и многое другое
var browser = new Browser()
, fakeData = readFixtures("persons.json");
fakeAPIResponse('/persons', fakeData);
browser.visit("http://localhost:3000/", function() {
assert.ok(browser.success);
var persons = browser.queryAll(".persons li");
assert.lengthOf(persons, 20);
});
а что-то вроде
var router = require('routers/main'),
UserModel = require('models/user'),
AccountView = require('views/account');
...
# In a test
var model = new UserModel({ userId: 1 });
router._showView(new AccountView({ model: model });
expect(document.getElementsByClassName('account-panel')).to.have.length(1);
model.set('name', 'Test Testerson');
expect(document.getElementById('name-field').value).to.equal('Test Testerson');
Может быть, я далеко, и нужно просто собрать некоторые тесты из конца в конец, но это мне кажется, что это будет ценный способ тестирования. Мой вопрос: как я могу это сделать? Мне нужен полный DOM, поэтому я думаю, что они должны работать в чем-то вроде PhantomJS; DOM следует сбросить до каждого теста, но кажется глупым/неэффективным, чтобы браузер переходил на новую страницу для каждого отдельного теста. Есть ли там среда для проведения теста таким образом? Не стесняйтесь сказать мне, что я не права этого.
Я не совсем уверен, где находится CasperJS. Вы оцениваете весь этот тестовый код внутри удаленного DOM с помощью 'casper.evaluate'? – rayd
Извините, я написал, что на ходу - мы используем только casper для тестирования интеграции. Пример выше был для модульного тестирования, который я рекомендую вам использовать здесь для упомянутого вами сценария. –
А я вижу, проблема, с которой я сталкиваюсь, заключается в том, что любые изменения/события DOM переносятся из одного тестового примера в другой. Я надеялся найти решение, которое позволит мне протестировать новый DOM для каждого теста. Возможно, я смогу взломать это вместе с Каспером, но я надеялся, что в этом случае может быть какая-то существующая структура. – rayd