茉莉花测试Durandal应用程序

时间:2013-11-28 03:47:48

标签: unit-testing requirejs jasmine durandal

方案
我正在为一个基于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模块,它总是返回一组标准数据。

2 个答案:

答案 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

这是我正在研究的图书馆,几天之后也可以测试小工具。