2016-11-19 3 views
1

spyOn (Dienst, someMethod) .and.callThrough();Jasmin SpionOn berücksichtigt nicht angular crubbins

dann ...

var an_object = some_objects[0]; 
useADirectiveThatRepeatsOver(some_objects); 

expect(service.someMethod).toHaveBeenCalledWith(an_object); 

nicht mit

Expected spy someMethod to have been called with [ Object({ 
    sent_date: '2016-11-18T12:06:29.712318Z', 
    email: '[email protected]', url: '/api/v1/invites/1/' }) ] 
    but actual calls were [ Object({ 
    sent_date: '2016-11-18T12:06:29.712318Z', 
    email: '[email protected]', url: '/api/v1/invites/1/', 
    $$hashKey: 'object:110' }) ]. 

der Richtlinie:

<div ng-repeat="obj in some_objects"> 
    <span ng-click="someControllerMethod(obj)">{{ obj.email }}</span> 
</div> 

Die Frage, AFAICT, tritt auf, wenn someControllerMethod (obj) aufgerufen wird - außerhalb diese Methode (zB kurz bevor das obj nicht $$ Hashkey hat, aber sobald someControllerMethod() aufgerufen wird, hat obj gewann den fehlerhaften Schlüssel.

Ich gehe davon aus, es gibt keine Möglichkeit zu verhindern, eckigen zu tun, was es tut, also, was sind einige Möglichkeiten, dies zu mildern? Natürlich kann ich angle.equals() anstelle von toEqual() verwenden, da die Methode toHaveBeenCalledWith() keine Möglichkeit bietet, den Vergleicher zu ändern.

Antwort

0

Stellt sich heraus, das über adressiert werden können:

<div ng-repeat="obj in some_objects track by field">...</div> 

Also für meinen speziellen Fall:

<div ng-repeat="invite in invites track by email">...</div> 
Verwandte Themen