I just spent a few hours wrestling with it (the error messages I got 
weren't very meaningful), and it appears Angular 2's injector can't handle 
any class not annotated with @Injectable or another Angular-specific 
annotation. This means Dart's existing non-Angular classes for http 
handling cannot be injected, and thus cannot have mocks injected in their 
place. I can write injectable wrappers easily enough, but that's exactly 
the sort of boilerplate busywork that Angular is supposed to help avoid.

So, I guess I'll write injectable wrappers for now, but having 
angular2/http available in Dart would be much preferred. I suppose 
injection of non-annotated classes that have a suitable constructor might 
also work, but HttpRequest in dart:html seems to be intended for a single 
request and BrowserClient in package:http says it can't do streaming. What 
would be the best way to try to get this handled long term, submit an issue 
report on github?

On Friday, January 22, 2016 at 1:52:40 PM UTC-8, Günter Zöchbauer wrote:
>
> I built this code just to get tests running I ported from TypeScript to 
> Dart
>
> import 'dart:async' show Future;
> import 'dart:html' show HttpRequest;
> import 'dart:convert' show JSON;
>
> class Http {
>   Future<Response> get(String uri) async {
>     final HttpRequest req = new HttpRequest()..open('GET', uri);
>     await req.onLoadEnd.first;
>     req.send();
>     return new Response(req);
>   }
> }
>
> class Response {
>   final HttpRequest request;
>   Response(this.request);
>
>   String text() => request.responseText;
>   dynamic json() => JSON.decode(request.response);
>
> } 
>
> It has only a `get()` method, but other methods are quite similar.
> You can get inspiration from the TypeScript source about what features to 
> add.
> For mocking, just extend it `class MockHttp extends Http {` and override 
> the methods with dummy actions.
>
> On Friday, January 22, 2016 at 7:42:35 PM UTC+1, Douglas Miller wrote:
>>
>> But does that work with Angular's dependency injection? I want to be able 
>> to mock it in tests.
>>
>> ...some quick googling says probably yes, I think. I'm new to Dart as 
>> well as Angular2, looks like I should have explored what Dart itself 
>> provides a bit more.
>>
>> On Friday, January 22, 2016 at 4:00:53 AM UTC-8, Günter Zöchbauer wrote:
>>>
>>> There is no Dart implementation for Http. You can just use what 
>>> `dart:html` or `package:http` provide or create your own wrapper class if 
>>> you want specific functionality. 
>>>
>>> On Friday, January 22, 2016 at 6:08:35 AM UTC+1, Douglas Miller wrote:
>>>>
>>>> The api docs say there's an angular2/http library in JavaScript and 
>>>> TypeScript, but as far as I can tell it doesn't exist in the Dart version. 
>>>> Am I missing something? Is it not implemented yet? Something else?
>>>>
>>>> The Dart api docs essentially say "see JavaScript docs" full stop, and 
>>>> I was under the impression that the use of code generation meant all three 
>>>> languages would have all exactly the same Angular features, so I'm a bit 
>>>> surprised and disappointed if this is missing. Searching through the Dart 
>>>> source that pub got for me, angular2/http does not exist and only one 
>>>> class 
>>>> (angular2/src/services/xhr_impl) does anything with http, and that class 
>>>> appears to be intended for internal use only.
>>>>
>>>

-- 
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 https://groups.google.com/group/angular.
For more options, visit https://groups.google.com/d/optout.

Reply via email to