0

angularjsアプリケーションにrequirejsを使用しています。TDD の場合、mochaを使用しています。この記事に従って、私はテストケースを書いていますが、テストケースの実行中に常にこのエラーが発生します

Error: [$injector:modulerr] Failed to instantiate module sampleapp due to:
Error: [$injector:nomod] Module 'sampleapp' is not available! You either misspelled the module name or forgot to load it. If registering a module ensure that you specify the dependencies as the second argument.

テストケース:

define([
    'angular',
    'angular-mocks'
], function() {
    describe('main controller todo app', function() {

        var scope, ctrl;

        beforeEach(module('sampleapp',[]));
        beforeEach(inject(function($rootScope, $controller) {
            scope = $rootScope.$new();
            ctrl = $controller('mainCtrl', {$scope: scope});
        }));

        it('is todo added', function() {
            scope.todo = 'My new Todo';
            scope.addTodo();
            assert.equal(scope.todos.length, 1);
        });
    })
});

カルマ会議:

module.exports = function(config) {
    'use strict';

    config.set({
        basePath: './',

        frameworks: [
            'requirejs',
            'mocha', 
            'chai'
        ],

        files: [{
            pattern: 'test/test-main.js',
            watched: true
        }, {
            pattern: 'app/angular/**/*.js', 
            included: false
        }, {
            pattern: 'app/*.js', 
            included: false
        }, {
            pattern: 'app/scripts/additional/**/*.js', 
            included: false
        }, {
            pattern: 'test/spec/**/*.js',
            included: false,
            watched: true
        }],

        exclude: [
            'app/main.js'
        ],

        reporters: ['spec'],

        port: 9876,

        colors: true,

        logLevel: config.LOG_INFO,

        autoWatch: true,

        browsers: ['Chrome'],

        captureTimeout: 20000,

        singleRun: false,

        plugins: [
            'karma-chai', 
            'karma-mocha',
            'karma-requirejs', 
            'karma-spec-reporter', 
            'karma-chrome-launcher'
        ]
    });
}

テストメイン:

var tests = [];
var TEST_REGEXP = /test[A-Za-z0-9]{1,}-[A-Za-z0-9]{1,}\.js/i;

Object.keys(window.__karma__.files).forEach(function(file) {
    if (TEST_REGEXP.test(file)) {
        tests.push(file);
    }
});

requirejs.config({

    'baseUrl': '/base/app',

    'paths': {
        'angular': 'scripts/additional/angular/angular',
        'angular-mocks': 'scripts/additional/angular-mocks/angular-mocks',
    },

    'shim': {
       'angular-mocks' : {'exports' : 'angular-mocks', 'deps': ['angular']}
    },

    'deps': tests,

    'callback': window.__karma__.start
});

これを修正するためのヘルプや指示は大歓迎です

4

1 に答える 1

0

主な問題は、モジュールが作成されたファイルがロードされなかったことです (つまり、コードを実行するファイルvar app = angular.module("sampleapp",[]);)

それが修正されると、すべてが機能し始めました

于 2015-08-03T09:04:01.803 に答える