Wie mock $Umfang.Variablen in Jasmin
Habe ich die folgenden test-case CompanyCtrlSpec.js
describe('ViewCompanyCtrl', function () {
var $rootScope, scope, $controller , $q ;
beforeEach(angular.mock.module('MyApp'));
beforeEach(inject(function ($rootScope, $controller ) {
scope = $rootScope.$new();
createController = function() {
return $controller('ViewCompanyCtrl', {
$scope: scope,
company : {}
});
};
}));
it('the company type should be equal to an object', function () {
var controller = new createController();
//some assertion
});
});
Folgenden ist ViewCompanyCtrl.js Datei
angular.module('MyApp').controller('ViewCompanyCtrl',
function ($scope, companyService, $state, meetingService, company, attachmentService) {
'use strict';
$scope.company = company;
$scope.companyInfo = {};
$scope.companyInfo['AName'] = [$scope.company.Address.Street, $scope.company.Address.ZipCode + ' ' + $scope.company.Address.City].join(', ');
//more code
});
Folgenden ist die app.routes.js Datei, wo Unternehmen immer gelöst
.state('company', {
abstract: true,
url: '/company/:companyId',
resolve: {
company: function($q, $stateParams, companyService){
var deferred = $q.defer();
companyService
.getCompany($stateParams.companyId)
.error(function(data, status, headers){
//more code
})
.success(function(data){
deferred.resolve(data);
});
return deferred.promise;
}
},
Mein problem ist, ich bekomme die folgende Fehlermeldung
TypeError: $scope.company.Address is undefined in C:/Users/MyApp/WebApiRole/app/compan
y/ViewCompanyCtrl.js (line 8)
@C:/Users/MyApp/WebApiRole/app/company/ViewCompanyCtrl.js:8:42
Ich vermute, dass dies passiert, weil ich nicht verhöhnen die Umfang.Unternehmen.Adresse in meinem test-Fall . Ich bin nicht sicher, wie das zu tun . Es schätzen, wenn jemand mir helfen kann mit dieser oder einer Methode, dies zu tun ?
InformationsquelleAutor Malik | 2015-06-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sieht es für mich aus wie die
$scope.company
ist die gleiche wie diecompany
eingespritzt wird, in Ihrer Steuerung. So brauchen Sie nur, um einAddress
auf diecompany
dass Sie injizieren in Ihrem mock, etwa so:Wenn Sie wollen, dass die Unternehmen Daten für jeden test, übergeben Sie einfach es in Ihre
createController()
Funktion:InformationsquelleAutor johnmcase
Versuchen, fügen Sie den controller, um die definition der route. Ein controller ist kein singleton ist wie der andere service. Es ist in der Regel gebunden an eine Staatliche oder eine Ansicht.
Sogar besser würde ich die
controller As
convention statt über scope in Ihrer Steuerung. Dann wird der controller sein, kommen die Rahmen.Beiseite, ich würde sehr empfehlen, einen Blick auf John Papa ' s coding standard oder Todd Motto ist. Beide sind gut und zu empfehlen, dass die Konvention.
InformationsquelleAutor Gabriel Kohen