Я разработал SPA-приложение, используя Knockout и Breeze, я использовал qunitJS для модульного тестирования, которое хорошо работает в браузере для моего проекта. Недавно я нашел плагин «Chutzpah» для VS2012, который может хорошо работать для тестирования qunit, который может проверять тестовые случаи и отвечать на тест, хотя я использую бриз, мои тестовые примеры включают:
Создание, удаление, изменение сущностей на стороне клиента
Сохраните изменения на стороне сервера с помощью контроллера бриза в SQLServer.
Здесь проблема заключается в том, что тестовые примеры breeze терпят неудачу, когда я тестирую в режиме наглости, потому что они не получают информацию на стороне клиента, например (Metadata/ControllerMethods), которая вызывается браузером через URL-адрес, определенный в Breezeconfig. Мой вопрос заключается в том, как мы можем выполнить модульное тестирование на бризе на стороне сервера, как это делают настоящие модульные тесты. Приветствуются предложения по использованию новых подключаемых модулей или библиотек, которые действительно могут заставить меня проводить модульное тестирование breeze
Вот фрагмент моего тестового проекта:
asyncTest("can save nothing", function () {
expect(1);
newEm().saveChanges()
.then(function(saveResult) {
equal(saveResult.entities.length, 0, 'succeeded in saving nothing');
})
.catch(handleFail).finally(start);
});
asyncTest("can save a new Customer entity", function () {
expect(1);
// Create and initialize entity to save
var em = newEm();
var customer = em.createEntity('Customer', {
CustomerID: newGuidComb(),
CompanyName: 'Test1 ' + new Date().toISOString()
});
em.saveChanges()
.then(function (saveResults) {
ok(!!saveResults.entities[0], ' should have saved new Customer with CustomerID ' +
customer.getProperty('CustomerID'));
})
.catch(handleFail).finally(start);
});
asyncTest("can modify my own Customer entity", function () {
expect(2);
var timestamp = new Date().toISOString();
var em = newEm();
var customer = em.createEntity('Customer', {
CustomerID: newGuidComb(),
CompanyName: "Test2A " + timestamp
});
em.saveChanges().then(modifyCustomer).fail(handleSaveFailed).fin(start);
function modifyCustomer(saveResults) {
var saved = saveResults.entities[0];
ok(saved && saved === customer,
"save of added customer should have succeeded");
customer.CompanyName("Test2M " + timestamp);
return em.saveChanges()
.then(confirmCustomerSaved);
}
function confirmCustomerSaved(saveResults) {
var saved = saveResults.entities[0];
ok(saved && saved === customer,
"save of modified customer, '{0}', should have succeeded"
.format(saved && saved.CompanyName()));
}
});