方案
我正在为一个基于Durandal的应用程序编写一些茉莉花测试,我正在写作。 Durandal文档表明编写测试的方式就像
ViewModel
define([
'knockout',
'plugins/router',
'services/unitofwork',
'services/logger',
'services/errorhandler',
'services/config'
],
function (ko, router, unitofwork, logger, errorhandler, config) {
var uow = unitofwork.create();
var searchTerm = ko.observable();
var results = ko.observableArray([]);
var search = function () {
uow.myySearch(searchTerm).then(function (data) {
results(data);
logger.log(data.length + ' records found', '', 'myViewModel', true);
});
};
var vm = {
search : search,
searchTerm : searchTerm,
results : results
};
});
测试
define(['viewmodels/myViewModel'], function (myViewModel) {
describe('Stuff im testing', function(){
it('returns true', function () {
expect(true).toBe(true);
});
});
});
对于我的大多数测试来说,这很有效。
问题
如何模拟/存根/伪造已传递到ViewModel的模块。例如UnitOfWork模块,它总是返回一组标准数据。
答案 0 :(得分:2)
对于单元测试,请查看https://github.com/iammerrick/Squire.js/ requirejs的依赖模拟器。使用require上下文的另一种技术在How can I mock dependencies for unit testing in RequireJS?中描述。
对于集成测试,您可能会查看类似http://saucelabs.com(基于selenium)的内容。
对于一些有助于在phantomjs浏览器中设置单元测试的grunt任务,请参阅https://github.com/RainerAtSpirit/HTMLStarterKitPro(免责声明:我是回购的维护者)。我很乐意看到一些模型集成,所以如果您有意愿,请发送拉取请求。
答案 1 :(得分:0)
检查一下 https://github.com/danyg/jasmine-durandal
这是我正在研究的图书馆,几天之后也可以测试小工具。