4
Ich habe die folgende Komponente:Wie testen Sie Unit eine Bindung mit einem anderen Namen in einer Angular 1.5-Komponente?
angular.module('foo')
.component('searchInput', {
bindings: {
text: "<query"
},
templateUrl: 'components/searchInput/searchInput.html',
controller: 'SearchInputCtrl'
});
Für folgendes passieren:
expect(component.text).toBe('bar');
Ich habe den folgenden Code verwenden:
var component = $componentController('searchInput',
{$scope: {}},
{
text: 'bar'
}
);
Ich möchte jedoch, dass testen Der an 'text' gebundene Wert wird von 'query' bezogen. Diese nicht Arbeit:
var component = $componentController('searchInput',
{$scope: {}},
{
query: 'bar'
}
);
, dass mein Kopf gegangen, aber ich möchte etwas mehr im Einklang mit dem, was die Winkel Entwickler Vorgeschlagen ist: $ Component - es ist einfach und Sie DOM vermeiden und damit die zusätzlichen Schritte zum Kompilieren und zu verdauen. –
Je mehr ich darüber nachdachte und die Angular-Quelle betrachtete, wie @rob darauf hinwies, ist die Arbeit mit DOM der einzige Weg. Da Komponenten syntaktischer Zucker für Richtlinien sind, sollte ich die gleichen Denkweisen/Erwartungen haben, wenn ich einen von ihnen teste. Wenn ich den Controller einer (expliziten) Direktive über $ controller teste, kann ich den Namen der Zielbindung angeben; Das gleiche sollte beim Testen des Steuergeräts einer Komponente über $ componentController zutreffen. Beim Testen des Quellattributs für eine Direktive verwende ich DOM und überprüfe isolateScope(); Das Gleiche gilt für Komponentenquellattribute. –
Ich hatte ähnliches Problem, wenn ich eine Variable in der Bindung wie definiert übergeben: ' My-Komponente>' Es hat nicht funktioniert, aber wenn ich das gleiche zugewiesen Ding in einem Umfang Variable und übergeben wie: ' My-Komponente>' es funktionierte nicht sicher warum? –
Pawan