Неправильное покрытие с Стамбул + Жасмин + Requirejs

У меня небольшая проблема с моим отчетом о покрытии. У меня есть функции, протестированные с помощью жасмина, но отчет о покрытии говорит мне, что эти функции не рассматриваются.

Я использую jasminejs с requirejs для тестирования своего кода, который также использует requirejs (с магистралью). Для запуска спецификаций используется grunt-contrib-jasmine, grunt-template-jasmine-istanbul и grunt-template-jasmine-requirejs. Тесты выполняются полностью нормально, и если я помещаю журнал в непокрытую функцию, я вижу, что эти функции вызываются несколько раз.

У меня неправильная настройка или почему прирост увеличения не включен?

Вот моя грубая конфигурация

jasmine: {
    coverage: {
        src: [
            'js/collection/*.js',
            'js/model/*.js',
            'js/util/*.js',
            'js/view/**/*.js'
        ],
        options: {
            specs: ['spec/**/*Test.js'],
            summary: true,
            template: require('grunt-template-jasmine-istanbul'),
            templateOptions: {
                coverage: 'test/coverage.json',
                report: {
                    type: 'html',
                    options: {
                        dir: 'test/coverage'
                    }
                },
                thresholds: {
                    lines: 50,
                    statements: 75,
                    branches: 75,
                    functions: 90
                },
                template: require('grunt-template-jasmine-requirejs'),
                templateOptions: {
                    requireConfigFile: 'js/configuration.js',
                    requireConfig: {
                        waitSeconds: 10
                    }
                }
            },
            junit: {
                path: 'test/junit'
            }
        }
    }
}

Вот образец класса

define([
        'jquery',
        'underscore',
        'backbone'
    ], function Filter_load($, _, Backone) {

        'use strict';

        /**
         * Representation of Filter settings
         */
        var Filter = Backone.Model.extend({

            /**
             * Define default values
             */
            defaults: {
                tags: [],
                range: 0,
                offset: 0,
                limit: 10
            },

            /**
             * Increase filter offset by filter limit
             */
            increaseOffset: function Filter_increaseOffset() {
                this.attributes.offset += this.attributes.limit;
            }
        });

        return Filter;
    });

И вот часть теста для этого класса

define([
    'model/Filter'
], function FilterTest_load(Filter) {

    /**
     * Validate the model/Filter class
     */
    return describe('A Filter', function() {

        /**
         * Validate behavior of offset property
         */
        describe('offset', function() {
            var filter = new Filter();
            it('should be 0', function() {
                expect(filter.get('offset')).toBe(0);
            });
            it('and change to 100', function() {
                filter.set('offset', 100);
                expect(filter.get('offset')).toBe(100);
            });
            it('should increase by 11', function() {
                filter.set('limit', 11);
                filter.set('offset', 0);
                expect(filter.get('offset')).toBe(0);
                filter.increaseOffset();
                expect(filter.get('offset')).toBe(11);
            });
            it('should increase stay on 10', function() {
                filter.set('limit', 0);
                filter.set('offset', 10);
                expect(filter.get('offset')).toBe(10);
                filter.increaseOffset();
                expect(filter.get('offset')).toBe(10);
            });
        });
    });
});

Заранее спасибо

0 ответов

Другие вопросы по тегам