Hi Matt,

For unit tests, here is a 
MockFirebase<https://github.com/katowulf/mockfirebase>I wrote which may help 
you. It's still alpha, a little thin on docs, but 
quite functional.

For e2e tests, of course, use the real deal.

On Monday, May 19, 2014 3:25:10 PM UTC-7, Matt Van wrote:
>
> Do you guys have any good examples of testing with firebase mocked? even 
> as a service. I'm using it as a service in mine still figuring out how to 
> mock it in protractor tests.
>
> On Monday, October 15, 2012 1:52:20 PM UTC-7, [email protected] wrote:
>>
>> Hi Rob -
>>
>> Co-founder of Firebase here. Did you get everything working?
>>
>> We'll release some code on gitHub that helps you get going with a new 
>> Angular/Firebase project quickly soon.
>>
>> James
>>
>>
>>
>> On Saturday, October 13, 2012 11:06:53 AM UTC-7, Witold Szczerba wrote:
>>>
>>> Peter is right, how are you going to test your controller in isolation 
>>> if you create collaborators inside?
>>> If I were you, I would read the blog of Misko, posts between 2007 and 
>>> 2009. All the stuff described there can be applied easily in AngularJS, 
>>> guess why ? hehe :-) 
>>>
>>> Regards,
>>> Witold Szczerba
>>> 12 paź 2012 17:12, "Peter Bacon Darwin" <[email protected]> 
>>> napisał(a):
>>>
>>>> Don't instantiate things like firebase in your controllers.  Wrap 
>>>> Firebase in a service and then inject it into your controllers.
>>>> That way, when testing, you can simply inject a dummy firebase instead.
>>>> By the way, the reason for you failure is that you are testing an 
>>>> asynchronous method but checking for its result before the method has run.
>>>> Also, I think you should be asking the injector to provide you with a 
>>>> controller rather than instantiating it yourself.
>>>> Pete
>>>>
>>>> On 12 October 2012 15:44, Rob Balfre <[email protected]> wrote:
>>>>
>>>>> Hi, 
>>>>>
>>>>> I'm trying to figure out a way to create unit tests that work with 
>>>>> AngularJS & Firebase (firebase.com).  Here's a very basic example:
>>>>>
>>>>> controller.js
>>>>>
>>>>> function TagListCtrl($scope, $timeout)   {
>>>>>     $scope.firebaseRef = new Firebase('
>>>>> https://gamma.firebase.com/**myusername**');
>>>>>     $scope.ctags = [];
>>>>>     
>>>>>     $scope.firebaseRef.on('child_added', function(snapshot){
>>>>>         var message = snapshot.val();
>>>>>         if (message.ctag) {
>>>>>             $timeout(function() {
>>>>>                 $scope.ctags.push({ ctag:message.ctag });
>>>>>             },0);
>>>>>         }
>>>>>     });
>>>>> }
>>>>> TagListCtrl.$inject = ['$scope','$timeout'];
>>>>>
>>>>>
>>>>> controllerSpec.js
>>>>>
>>>>> 'use strict';
>>>>>
>>>>> /* jasmine specs for controllers go here */
>>>>>
>>>>> describe('Cohort controllers', function() {
>>>>>     describe('TagListCtrl', function() {
>>>>>         it('should create "ctags" model with 1 ctag', function() {
>>>>>             var scope = {},
>>>>>             ctrl = new TagListCtrl(scope);
>>>>>             expect(scope.ctags.length).toBe(1);
>>>>>         });
>>>>>     });
>>>>> });
>>>>>
>>>>>
>>>>> jsTestDriver.conf
>>>>>
>>>>> load:
>>>>> ...
>>>>> - test/lib/firebase/firebase.js
>>>>>
>>>>>
>>>>> The test fails with the output:
>>>>>
>>>>> ... controllers TagListCtrl.should create "ctags" model with 1 ctag 
>>>>> failed (15.00 ms): Error: Expected 0 to be 1.
>>>>> Error: Expected 0 to be 1.
>>>>> at null.<anonymous> (test/unit/controllersSpec.js:11:40)
>>>>>
>>>>>
>>>>> The non-test code works fine and returns the one result from Firebase 
>>>>> fine. 
>>>>>
>>>>> Any help would be very welcome!
>>>>>
>>>>> Thanks,
>>>>> Rob
>>>>>
>>>>>
>>>>>  -- 
>>>>> You received this message because you are subscribed to the Google 
>>>>> Groups "AngularJS" group.
>>>>> To post to this group, send email to [email protected].
>>>>> To unsubscribe from this group, send email to 
>>>>> [email protected].
>>>>> Visit this group at http://groups.google.com/group/angular?hl=en.
>>>>>  
>>>>>  
>>>>>
>>>>
>>>>  -- 
>>>> You received this message because you are subscribed to the Google 
>>>> Groups "AngularJS" group.
>>>> To post to this group, send email to [email protected].
>>>> To unsubscribe from this group, send email to 
>>>> [email protected].
>>>> Visit this group at http://groups.google.com/group/angular?hl=en.
>>>>  
>>>>  
>>>>
>>>

-- 
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.

Reply via email to