0
我正在使用angular js 1.5。我有一個組件有一個電影列表(數組),並期望使用指令(電影項目)呈現電影列表。angularjs測試組件中的指令
我想單元測試這個組件,並確保它已經呈現與電影列表數組長度匹配的電影。
電影項目指令希望收集來自用戶的輸入,但我只是簡化它。
我該如何測試?
電影列表組件
(function() {
"use strict";
var module = angular.module("psMovies");
function controller() {
var model = this;
model.movies = [];
model.$onInit = function() {
model.movies = [{"id": 1,"title": "Star Wars"},{"id": 2,"title": "Star Trek"}];
};
}
module.component("movieList", {
templateUrl: "movie-list.component.html",
controllerAs: "model",
controller: [ controller]
});
}());
電影list.component HTML
<div ng-repeat="movie in model.movies">
<movie-item item="movie"> </movie-item>
</div>
電影項組件
angular.module('psMovies')
.directive('movieItem', function() {
"use strict";
return {
templateUrl: 'movie-item.component.html',
restrict: 'EA',
scope: {
item: '=',
},
link: function(scope) {
}
};
});
電影項目HTML
<div> {{model.id}} - {{model.title}}</div>
我的單元測試
describe("The movieList component", function() {
beforeEach(module("psMovies"));
var moviesList;
beforeEach(inject(function ($componentController) {
moviesList = $componentController("movieList",{
$scope: {}
});
}));
it("can be created", function() {
expect(moviesList).toBeDefined();
expect(moviesList.$onInit).toBeDefined();
});
});
的問題是不夠清晰。哪一個是「指令」,哪一個是「組件」。您發佈的代碼中只有'movieItem' *組件*。 – estus
@estus,我解決了這個問題。 – dream123
嘗試注入'beforeEach(注入(函數($ componentController,_ $ rootScope_)''並將其分配給'$ scope = _ $ rootScope.new()_; –