У меня есть функция, называемая getTodaysHours() в моем контроллере, которую я бы хотел проверить. Мне было интересно, могу ли я издеваться над данными JSON ниже в моей спецификации тестирования устройств?как издеваться над json-данными для модульного тестирования?
describe('vendor controller',() => {
let vm;
beforeEach(angular.mock.module('thcmaps-ui'));
beforeEach(inject(($controller) => {
vm = $controller('VendorController');
vm.data = {"_id":"56b54f9368e685ca04aa0b87","lat_lon":"33.713018,-117.841101",...}
}));
it('should state store hours for today',() => {
console.log(vm.data);
expect(1).toEqual(1);
});
});
vendor.controller
export class VendorController {
constructor($rootScope, data, event, toastr, moment, _, distanceService, vendorDataService, userDataService, stateManagerService) {
'ngInject';
//deps
this.$rootScope = $rootScope;
this.toastr = toastr;
this._ = _;
this.userDataService = userDataService;
this.vendorDataService = vendorDataService;
this.stateManagerService = stateManagerService;
this.event = event;
//bootstrap
data.isDeepLink = true;
this.data = data;
this.data.last_update = moment(this.data.updated_at).format('MM/DD/YY h:mm A');
this.data.distance = distanceService.getDistance(this.data.loc.lng, this.data.loc.lat);
this.data.todaysHours = this.getTodaysHours();
this.data.rating_num = Math.floor(data.rating);
this.hasReviewed = (userDataService.user.reviewed[data._id]) ? true : false;
this.isGrid = false;
this.isSearching = false;
this.hideIntro = true;
this.menuCollapsed = true;
this.filterMenuCollapsed = true;
this.selectedCategory = 'All';
this.todaysHours = '';
this.type = '';
this.searchString = '';
this.reviewScore = 0;
this.today = new Date().getDay();
this.vendorDataService.currentVendor = data;
//load marker onto map
$rootScope.$broadcast(event.ui.vendor.pageLoad, data);
//get menu
vendorDataService.getVendorMenu(data._id)
.then((res)=> {
this.data.menu = res.menu;
this.menuContainer = this.data.menu;
this.totalResults = this.getTotalResults();
this.availableMenuCategories = this.getAvailableMenuCategories();
})
.catch(() => {
this.toastr.error('Whoops, Something went wrong! We were not able to load the menu.', 'Error');
});
}
//get todays hours
getTodaysHours() {
let today = this.data.hours[new Date().getDay()];
return (today.opening_time || '9:00am') + ' - ' + (today.closing_time || '5:00pm');
}
}
Когда я попытался войти vm.data Я получаю
Error: [$injector:unpr] Unknown provider: dataProvider <- data <- VendorController
TypeError: undefined is not an object (evaluating 'vm.data')
Ваш объект vm.data содержит ', ...', который не является допустимым объектом, является ли это вашим реальным объектом или потому, что вы удалили некоторые свойства ...? – yishaiz
также см. [Этот ответ] (http://stackoverflow.com/a/18523642/3883957) для json mock data, так я предоставляю json mock data для своих тестов – yishaiz
спасибо, json был слишком длинным, поэтому Я оставил некоторые части – Brett