Hi Daniel,
Just to be clear, the value of someData has to get defined by you. someData
won't come from the real endpoint.
For example:
var someData = {a: '1', b: '2'};
.respond(200, someData);
Foo.then(function (data) {
expect(data.length).toBe({a: '1', b: '2'});
On Friday, March 28, 2014 5:53:29 PM UTC-7, Daniel Suarez wrote:
>
> Thanks so much for the answer. $httpBackend will get me the actual json
> file, right? I think I need fake data objects to create different tests,
> would i be able to do that with $httpBackend?
>
> On Friday, March 28, 2014 8:12:36 PM UTC-4, Luis De Avila wrote:
>>
>> You'll want to inject $httpBackend
>>
>> var $httpBackend;
>> beforeEach(inject(function ( _$httpBackend_) {
>> $httpBackend = _$httpBackend_
>>
>> Then inside your test invoke $httpBackend.when() to mock the getting of
>> the data.
>>
>> $httpBackend.when('GET',
>> '/some-url')
>> .respond(200, someData);
>> Foo.then(function (data) {
>> expect(data.length).toBeGreaterThan(0);
>>
>>
>> On Friday, March 28, 2014 4:25:59 PM UTC-7, Daniel Suarez wrote:
>>>
>>> Hey All,
>>>
>>> I'm trying to get some tests but it is not working. I have a controller
>>> that calls a service
>>>
>>> var myCtrl = function($scope, someData) {
>>>
>>> $scope.someData = someData;
>>> someData.getCurrentQuestion();
>>>
>>> };
>>> return [ "$scope", 'someData', myCtrl ];
>>>
>>> I have a service that gets data from an $http
>>>
>>> var someData = function($http) {
>>> var Data = {
>>> getCurrentQuestion: getCurrentQuestion,
>>>
>>> };
>>> function getCurrentQuestion() {
>>> $http.get('PATH').success(function(data) {
>>> Data.questionId = data.questionId;
>>> Data.text = data.text;
>>> Data.kind = data.kind;
>>> })
>>>
>>> }
>>> return Survey
>>> };
>>> return ['$http', someData]
>>>
>>> Now from the following test that is not working, how would i fake data
>>> for the $http request. This is my non-working code. I would really
>>> appreciate your help.
>>>
>>> describe('myCtrl', function() {
>>> var $scope,
>>> mockService,
>>> firstQuestion = {
>>> "questionId": "gender",
>>> "text": "blah",
>>> "kind": true,
>>> };
>>>
>>> beforeEach(module('myModule'));
>>> beforeEach(inject(function($rootScope, $controller,_someData_,
>>> $q) {
>>> $scope = $rootScope.$new();
>>> mockService = _someData_;
>>> spyOn(mockService, 'getCurrentQuestion')
>>> .andCallFake(function() {
>>> return firstQuestion
>>> });
>>> $controller('myCtrl', {$scope:
>>> $scope, someData: mockService})
>>> }));
>>>
>>> beforeEach(function(){
>>> $scope.$digest();
>>> });
>>>
>>>
>>>
>>> describe('someService', function() {
>>> it('ensures test passes' , function() {
>>> expect($scope.someData. questionId).toBe('gender');
>>> });
>>>
>>> it(''ensures test passes'', function() {
>>> expect($scope.someData.kind).toBe(true);
>>> });
>>>
>>> })
>>>
>>> })
>>>
>>
--
You received this message because you are subscribed to the Google Groups
"AngularJS" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/angular.
For more options, visit https://groups.google.com/d/optout.