Разработих SPA приложение, използвайки knockout и breeze, използвах qunitJS за модулно тестване, което работи добре в браузър за моя проект. Наскоро намерих плъгин "Chutzpah" за VS2012, който може да работи добре за тестване на qunit, който може да проверява тестовите случаи и да отговаря за теста, въпреки че използвам breeze, моите тестови случаи включват:
Създаване, изтриване, модифициране на обекти от страна на клиента
Запазете промените от страна на сървъра с помощта на breeze контролер към SQLServer
Тук проблемът е, че прецизните тестови случаи се провалят, когато тествам в Chutzpah, защото те не получават информация от страна на клиента като (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()));
}
});