2017-05-24 31 views
0

助けてください。私はカルマでテストするのが初めてです。 "karma start karma.local.conf.js"を実行すると、Chromeブラウザのウィンドウが表示されますが、テストは実行されません。私のapp.jsと私のtest.jsは大丈夫だと思います。問題は私のpackage.jsonにロードしているパッケージのバージョンが間違っていると思われます。私はまた、モカとチャイを含める必要が知っている:ここでカルマテストは実行されません

{ 
    "devDependencies": { 
    "browserify": "10.2.3", 
    "gulp": "3.8.11", 
    "gulp-browserify": "0.5.1", 
    "karma": "0.12.16", 
    "karma-chai": "0.1.0", 
    "karma-chrome-launcher": "0.1.4", 
    "karma-mocha": "0.1.4", 
    "http-status": "0.1.8", 
    "underscore": "1.5.2" 
} 
} 

は私のkarma.local.conf.jsファイルです:

module.exports = function(config) { 
    config.set({ 
    files: [ 
     'http://code.jquery.com/jquery-1.11.3.js', 
     'https://ajax.googleapis.com/ajax/libs/angularjs/1.4.0/angular.js', 
     // For ngMockE2E 
     'https://ajax.googleapis.com/ajax/libs/angularjs/1.4.0/angular-mocks.js', 
     './app.js', 
     './test.js' 
    ], 
frameworks: ['mocha', 'chai'], 
browsers: ['Chrome'], 
proxies : { 
    '/': 'http://localhost:3000' 
} 
}); 
}; 

私もapp.jsとtest.jsを投稿することができます必要な場合は、私は彼らが大丈夫だと思う。問題はpackage.jsonにあり、必要なnpmパッケージの正しいバージョンを入手していると思います。ここで

は私app.jsです:事前に

describe('Nav Bar', function() { 
    var injector; 
    var element; 
    var scope; 
    var compiler; 
    var httpBackend; 

    beforeEach(function() { 
    injector = angular.injector(['myApp', 'ngMockE2E']); 
    intercepts = {}; 

    injector.invoke(function($rootScope, $compile, $httpBackend) { 
     scope = $rootScope.$new(); 
     compiler = $compile; 
     httpBackend = $httpBackend; 
    }); 
    }); 

    it('shows logged in users name', function(done) { 
    httpBackend.expectGET('/api/v1/me').respond({ 
     user: { profile: { username: 'John' } } 
    }); 

    element = compiler('<user-menu></user-menu>')(scope); 
    scope.$apply(); 

    httpBackend.flush(); 
    assert.notEqual(element.find('.user').css('display'), 'none'); 
    assert.equal(element.find('.user').text().trim(), 'Current User: John'); 
    done(); 
    }); 
}); 

おかげで、

ウィリアム

答えて

0
Here is what I did to get my tests to run: 

1. Run "npm install <package name> without a version number for each package in my package.json file 
2. Run "karma init" to create a new config file. By default this command creates karma.conf.js 
3. Modify karma.conf.js with the information from karma.local.conf.js 
4. Run "karma start". By default this command looks for a file named karma.conf.js (I had already run "npm install -g karma-cli" so I was able to run "karma start" without specifying a path 
5. Next I will run "npm ls" to see what package versions were installed and create a new version of package.json for future projects. 

別の解決策:ここ

var app = angular.module('myApp', ['ng']); 

app.directive('userMenu', function() { 
    return { 
    controller: 'MyHttpController', 
    template: '<div class="user" ng-show="user">' + 
      ' Current User: {{user.profile.username}}' + 
      '</div>' + 
      '<div ng-show="!user">' + 
      ' <a href="/auth/facebook">' + 
      ' Log In' + 
      ' </a>' + 
      '</div>' 
    } 
}); 

app.controller('MyHttpController', function($scope, $http) { 
    $http.get('/api/v1/me').success(function(data) { 
    $scope.user = data.user; 
    }); 
}); 

は私test.jsです"npm install"を実行するかもしれない次にncu -uを実行してすべてのパッケージを最新バージョンに更新します。それは動作するかもしれませんが、私はそれをテストしていません。

関連する問題