programing

카르마를 사용한 각도 테스트: "모듈이 정의되지 않았습니다."

javamemo 2023. 10. 17. 19:56
반응형

카르마를 사용한 각도 테스트: "모듈이 정의되지 않았습니다."

저는 이 질문이 여러 번 질문되어 왔고, 대부분의 경우 사람들이 그 질문을 놓치고 있다는 것을 알고 있습니다.angular-mocks.js파일.

모듈에서 공장 테스트를 시도하다 같은 문제가 발생했습니다.불행히도, 저는 계속해서 테스트 문제에 부딪힙니다(왜, Angular, 오, 왜 당신은 그것을 가정해야 합니까?window그리고.documentobject?), 해당 모듈이 정의되지 않은 상태.난 어쩔 줄 모르겠다.angular.mocks.module도 사용해 보았지만 Angular가 정의되지 않았다는 메시지가 나타납니다.내가 뭘 잘못하고 있는 거지?

물론, 저는 작업 주자로 꿀꺽꿀꺽을 사용하고 있습니다.내 gulp 파일(아직 완벽하지 않음, 작업이 연결되어 있지 않음):

var gulp = require('gulp'),

    uglify = require('gulp-uglify'),
    jshint = require('gulp-jshint'),
    jasmine = require('gulp-jasmine'), 
    karma = require('gulp-karma'),

    paths = {
        scripts: "scripts/*.js",
        spec: "spec/*.js",
        dist: "dist"
    };

gulp.task('prepare', function () {
    return gulp.src(paths.scripts)
        .pipe(jshint())
        .pipe(jshint.reporter('default'))
        .pipe(uglify())
        .pipe(gulp.dest(paths.dist))
});

gulp.task('test', function () {
    gulp.src([paths.scripts, paths.spec])
        .pipe(karma({
            configFile: 'karma.conf.js',
            action: 'run'
        }));
});

gulp.task('default', ['prepare', 'test']);

카르마에 의해 생성된 나의 카르마.conf.js:

// Karma configuration
// Generated on Fri Mar 14 2014 14:24:30 GMT-0400 (EDT)

module.exports = function(config) {
  config.set({

    // base path that will be used to resolve all patterns (eg. files, exclude)
    basePath: '',


    // frameworks to use
    // available frameworks: https://npmjs.org/browse/keyword/karma-adapter
    frameworks: ['jasmine'],


    // list of files / patterns to load in the browser
    files: [
      './lib/angular/angular.min.js',
      './lib/angular-mocks/angular-mocks.js',
      './src/*.js',
      './spec/*.js'
    ],


    // list of files to exclude
    exclude: [

    ],


    // preprocess matching files before serving them to the browser
    // available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor
    preprocessors: {

    },


    // test results reporter to use
    // possible values: 'dots', 'progress'
    // available reporters: https://npmjs.org/browse/keyword/karma-reporter
    reporters: ['progress'],


    // web server port
    port: 9876,


    // enable / disable colors in the output (reporters and logs)
    colors: true,


    // level of logging
    // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG
    logLevel: config.LOG_INFO,


    // enable / disable watching file and executing tests whenever any file changes
    autoWatch: false,


    // start these browsers
    // available browser launchers: https://npmjs.org/browse/keyword/karma-launcher
    browsers: ['Chrome'],


    // Continuous Integration mode
    // if true, Karma captures browsers, runs the tests and exits
    singleRun: false
  });
};

그리고 마지막으로, 제 테스트 스위트룸(아직 준비된 것이 없습니다. 이 장애물을 통과할 수 있다면 저희는 괜찮을 것입니다.)

/* Tests for memento.js. */

describe('memento core test suite', function () {
    var memento;

    beforeEach(module('Memento'));

    beforeEach(function() {
        inject(function(_memento_) {
            memento = _memento_;
        });
    });

    // Check functions.
      // check to see if it has the expected function
    it('should match expected interface', function () { 
        expect(angular.isFunction(memento.canUndo)).toBe(true);
        expect(angular.isFunction(memento.canRedo)).toBe(true);
        expect(angular.isFunction(memento.undo)).toBe(true);
        expect(angular.isFunction(memento.redo)).toBe(true);
        expect(angular.isFunction(memento.push)).toBe(true);
    });

    it('should initialize', function () {
        this.fail(Error('Test not implemented'));
    });

    it('should push() a changed object', function () {
        this.fail(Error('Test not implemented'));
    });

    it('should not push() an unchanged object', function () {
        this.fail(Error('Test not implemented'));
    });

    it('should return original object on undo()', function () {
        this.fail(Error('Test not implemented'));
    });

    it('should return modified object on redo()', function () {
        this.fail(Error('Test not implemented'));
    });

    it('should not undo() if at beginning of stack', function () {
        this.fail(Error('Test not implemented'));
    });

    it('should not redo() if at end of stack', function () {
        this.fail(Error('Test not implemented'));
    });

    // TODO: Implement revert to original, clearing history.
    // 
    // it('should return seed object on revert()', function () {
    //  this.fail(Error('Test not implemented'));
    // });

    // it('should clear the stack on clear()', function () {
    //  this.fail(Error('Test not implemented'));
    // });
});

이상한 거 본 사람?제가 놓치고 있는 무언가 정말 명백한 것이 있는지 잘 모르겠습니다. 저는 추가적인 눈을 사용하거나 많은 눈을 사용할 수도 사용할 수 있습니다.원래 카르마 없이 간단한 재스민 테스트 스위트로 운영할 수 있을 줄 알았는데 앵글 때문에 문제가 생겼습니다.이것이 작동하지 않으면 그냥 npm의 Angular 패키지를 사용하고 CommonJS를 지원하도록 Angular 모듈을 변경할 수도 있습니다.

감사합니다 여러분!제가 미쳤지 않길 바랍니다.

편집: 개발 종속성을 포함했습니다.

  "devDependencies": {
    "gulp": "~3.5.6",
    "gulp-uglify": "~0.2.1",
    "gulp-jshint": "~1.5.0",
    "gulp-jasmine": "~0.2.0",
    "angular": "~1.2.10",
    "karma": "~0.12.0",
    "gulp-karma": "0.0.4",
    "karma-jasmine": "~0.2.2",
    "karma-chrome-launcher": "~0.1.2"
  }

module/angular가 정의되지 않았다는 메시지는 karma.conf.js 파일에 나열되어 있음에도 불구하고 angular-mocks.js 파일이 로드되지 않고 있음을 의미합니다.

당신이 겪고 있는 문제는 carma.conf.js 파일 배열을 무시하는 gulp-karma입니다.이것은 문자열이나 글로벌을 gulp.src에 전달할 때 발생합니다.

이 문제를 해결하려면 gulp.src에 bogs 파일에 대한 문자열 "./foobar"를 전달하면 karma.conf.js 파일의 파일 배열이 대신 사용됩니다.

gulp.task('test', function () {
  gulp.src('./foobar')
    .pipe(karma({
      configFile: 'karma.conf.js',
      action: 'run'
    }));
});

도움이 되길 바랍니다!

참조 : https://github.com/lazd/gulp-karma/issues/9

고객님의 특별한 문제에 대한 답변은 아니지만, 저도 비슷한 상황에서 비슷한 증상이 있었습니다.하지만 근본적인 원인이 달랐기 때문에 다른 분들이 이 게시물을 찾았을 때 저와 같은 문제가 생겼을 때 여기에 공유하겠습니다.

저 같은 경우는 게임 후반에 테스트를 도입했기 때문에 각도(1.4.7)와 각도-모크(1.6.9) 버전이 일치하지 않았습니다.

저는 브라우저에서 카르마 디버그를 통해 이것이 근본 원인임을 알게 되었습니다.각도를 맞추기 위해 각도-모의 버전을 낮추면 문제가 해결되었습니다.

언급URL : https://stackoverflow.com/questions/22413767/angular-testing-with-karma-module-is-not-defined

반응형