programing

Yooman과 Angular JS를 사용하여 E2E 테스트와 유닛 테스트를 모두 자동화하려면 어떻게 해야 합니까?

telecom 2023. 3. 6. 20:39
반응형

Yooman과 Angular JS를 사용하여 E2E 테스트와 유닛 테스트를 모두 자동화하려면 어떻게 해야 합니까?

Yoman과 generator-angular를 사용해서 Angular를 관리하고 있습니다.JS 앱이지만 자동 테스트에 문제가 있습니다.

.grunt test1번으로 하다 테스트 후에 하려면 , 「」의 「」을 합니다.Gruntfile.js 추가, e2e: 추가

karma: {
  //...
  e2e: {
    configFile: 'karma-e2e.conf.js',
    singleRun: true
  }
},

가 좋다다다다를 요.입력하면grunt test모든 테스트가 실행됩니다.큰시작, , 실행 가 발생합니다.대신 서버와 Chrome 프로세스가 계속 실행되고 테스트를 저장할 때 테스트를 다시 실행해야 합니다.

가지를 모두 .karma.conf.js ★★★★★★★★★★★★★★★★★」karma-e2e.conf.js 설정singleRun = true를 실행하고 나서, 를 실행합니다karma start페인으로, 1개의 단말 페인으로,karma start karma-e2e.conf.js 로) 하지 않는 은 기능합니다.카르마 설정의 어느 포토도 경합하지 않는 경우(디폴트에서는 경합합니다).이제 나는 Grunt를 무시하고 내 일을 하고 있다(Grunt는 일을 쉽게 해야 하기 때문에 조금 바보같다).

어쨌든, 몇 가지 변경 후(수정)-간단하게는상세하지않습니다.- 이 방법은 동작하지만 잘라내지는 않습니다.이제 2개의 다른 명령어를 실행하여 2개의 다른 단말페인을 감시해야 합니다.분명히 더 좋은 방법이 있을 거야.

하나의 명령어를 실행하여 테스트 파일을 감시하고 테스트를 적절하게 재실행하려면 어떻게 해야 합니까?

보너스 질문: 도대체 왜 이 기능이 그대로 제공되지 않는 거죠?발전기-각선 개발자가 이러한 것들을 구현하기에 충분한 시간을 갖지 못한 것에 대한 질문입니까?이제 막 Angular/Yeoman/Karma(아마도 눈치채셨겠지만)에 들어갔을 뿐인데, E2E와 유닛 테스트의 자동화가 워크플로우에 매우 중요하다고 생각하기 때문입니다.

했듯이 Phantom은 많은 .JS에 관한 것입니다.을 처리할 수 , 할 수 .grunt test모든 걸 시작하려고요

grunt-karma를 사용하면 편리한 애드온과 함께 카르마 옵션을 완전히 맞춤화할 수 있습니다.

문서에서:

....

다음과 같은 구성 파일의 설정을 직접 재정의할 수 있습니다.

karma: {   
  unit: {
    configFile: 'karma.conf.js',
    runnerPort: 9999,
    singleRun: true,
    browsers: ['PhantomJS']   
  }
}

설정 공유

대상이 여러 개인 경우 대상 간에 공통 구성 설정을 공유하는 것이 유용할 수 있습니다.Grunt-karma는 다음 옵션 속성을 사용하여 이를 지원합니다.

karma: {
  options: {
    configFile: 'karma.conf.js',
    runnerPort: 9999,
    browsers: ['Chrome', 'Firefox']
  },
  continuous: {
    singleRun: true
    browsers: ['PhantomJS']
  },
  dev: {
    reporters: 'dots'
  }
}

또한 Yeoman의 생성기-각선 Gruntfile 코드를 기웃거려 사용 가능하거나 최소한 모킹할 수 있는 다른 것이 있는지 확인할 수 있습니다.

이를 통해 e2e 테스트만 실행할 수 있습니다.

grunt karma:e2e

karma.conf.files 파일(약 line:38)에서 autoWatch = false를 찾아 true로 변경합니다.

이제 grunt karma:unit을 실행하면 테스트 서버가 실행 중인 상태로 유지되며 프로젝트 파일을 변경하면 즉시 테스트가 다시 실행됩니다.

//
// test/midway/appSpec.js
//
describe("Midway: Testing Modules", function() {
  describe("App Module:", function() {

    var module;
    before(function() {
      module = angular.module("App");
    });

    it("should be registered", function() {
      expect(module).not.to.equal(null);
    });

    describe("Dependencies:", function() {

      var deps;
      var hasModule = function(m) {
        return deps.indexOf(m) >= 0;
      };
      before(function() {
        deps = module.value('appName').requires;
      });

      //you can also test the module's dependencies
      it("should have App.Controllers as a dependency", function() {
        expect(hasModule('App.Controllers')).to.equal(true);
      });

      it("should have App.Directives as a dependency", function() {
        expect(hasModule('App.Directives')).to.equal(true);
      });

      it("should have App.Filters as a dependency", function() {
        expect(hasModule('App.Filters')).to.equal(true);
      });

      it("should have App.Routes as a dependency", function() {
        expect(hasModule('App.Routes')).to.equal(true);
      });

      it("should have App.Services as a dependency", function() {
        expect(hasModule('App.Services')).to.equal(true);
      });
    });
  });
});

언급URL : https://stackoverflow.com/questions/16737518/how-can-i-automate-both-e2e-and-unit-tests-with-yeoman-angularjs

반응형