How can I automate both E2E and unit tests with Yeoman & AngularJS?

后端 未结 4 1467
旧巷少年郎
旧巷少年郎 2021-02-01 02:54

I\'m using Yeoman and generator-angular to manage AngularJS apps, but I\'m having trouble with automated testing.

Running grunt test will run unit tests onc

相关标签:
4条回答
  • 2021-02-01 03:35

    Within the karma.conf.js file (approx line:38) find autoWatch = false; and change it to true.

    Now if you run grunt karma:unit you will find that it leaves the test server running and any changes to project files immediately run the tests again.

    0 讨论(0)
  • 2021-02-01 03:36

    You can try this to run only e2e tests

    grunt karma:e2e
    
    0 讨论(0)
  • 2021-02-01 03:38

    As I mentioned in a comment to your question - PhantomJS saves a lot of hassle. That aside, I believe you can handle everything from within your Gruntfile and just continue to run grunt test to start the whole thing.

    grunt-karma allows full customization of your karma options with some handy add-ons.

    From the docs:

    ....

    You can override any of the config file's settings directly:

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

    Sharing Configs

    If you have multiple targets, it may be helpful to share common configuration settings between them. Grunt-karma supports this by using the options property:

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

    Additionally you may want to snoop around in Yeoman's generator-angular Gruntfile code to see what else may be available or at least mockable.

    0 讨论(0)
  • 2021-02-01 03:46
    //
    // 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);
          });
        });
      });
    });
    
    0 讨论(0)
提交回复
热议问题