Quit测试不适用于visualstudio2012,因为它们适用于浏览器



我使用knocket和breeze开发了一个SPA应用程序,我一直在使用qunitJS进行单元测试,它在我的项目浏览器上运行良好。最近我发现了一个VS2012的插件"Chutzpah",它可以很好地用于测试qunit,它可以检查测试用例并响应测试,尽管我使用的是微风。我的测试用例包括:

  1. 在客户端上创建、删除、修改实体

  2. 使用微风控制器将服务器端的更改保存到SQLServer

这里的问题是,当我在Chutzpah中测试时,微风测试用例失败了,因为它们没有获得客户端信息,比如(元数据/控制器方法),浏览器通过Breezeconfig中定义的url调用这些信息。我的问题是我们如何在服务器端的微风上执行单元测试就像真实的单元测试用例一样。欢迎使用新插件或库的建议,这些插件或库实际上可以让我进行微风的单元测试

以下是我的测试项目的片段:

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()));
}
});

简单的答案是设置测试,这样就不需要服务器通信。捕获元数据,以便在运行测试之前从脚本中加载它。在Breeze中创建模拟数据,以便从本地EntityManager而不是服务器进行查询。

当然,您应该将应用程序的业务逻辑(需要大量测试的类型)与服务器通信位分离。

最新更新