Ho seguito il test angolare Play by Play su PluralSight di John Papa e Ward Bell.
Attualmente sto ottenendo il seguente errore quando eseguo le mie specifiche.
AssertionError: expected { Object ($$state) } to have a property 'length'
at Assertion.assertLength (bower_components/chai/chai.js:1331:37)
at Assertion.assert (bower_components/chai/chai.js:4121:49)
at Context.<anonymous> (scripts/home/homeController.Specs.js:48:49)
Si noti che ho incluso solo il codice che credo sia rilevante in modo che non sto sovraccaricando a questa domanda con informazioni irrilevanti. Se hai bisogno di vedere più codice non è un problema.
Il mio codice è il seguente:
homeController.js:
window.app.controller('homeController', ['$scope', 'sidebarService',
function ($scope, sidebarService) {
$scope.title = 'Slapdash';
$scope.sidebar = {
"items": sidebarService.getSidebarItems()
};
}])
sidebarService.js:
(function() {
window.app
.service('sidebarService',['$http', function ($http) {
this.getSidebarItems = function() {
$http.get("http://wwww.something.com/getSidebarItems")
.then(function (response) {
return response.data;
});
};
}]);
}());
homeController.Specs.js:
beforeeach:
beforeEach(function() {
bard.appModule('slapdash');
bard.inject(this, '$controller', '$q', '$rootScope')
var mockSidebarService = {
getSidebarItems : function(){
return $q.when(mockSidebarMenuItems);
}
};
controller = $controller('homeController', {
$scope: scope,
sidebarService: mockSidebarService
});
});
mancanza spec:
it('Should have items', function() {
$rootScope.$apply();
expect(scope.sidebar.items).to.have.length(mockSidebarMenuItems.length); // same number as mocked
expect(sidebarService.getSidebarItems).to.have.been.calledOnce; // it's a spy
});
Avete controllato che 'return $ q.when (mockSidebarMenuItems);' restituendo effettivamente gli articoli? in particolare 'mockSidebarMenuItems'. –
bene questo è il problema ma non la soluzione. Restituisce un oggetto (stato $$). Ne ho bisogno per restituire gli articoli –
@ It-Z Ho trovato la risposta! Mi ci è voluto molto tempo per risolverlo, ma dopo essere tornato da una corsa e averlo guardato con occhi nuovi, tutto ha avuto un senso! –