2009-06-07 9 views
0

Ich verwende this Art von Verkabelung für meine MVC und ich möchte den Controller testen. Bis jetzt habe ich zwei Wege gefunden: Entweder meine Spionage-Ereignisse oder mein Controller offenbaren öffentliche Methoden.Sollten Mock-Objekte Ereignisse versenden?

Dispatching Ereignisse scheinen den Weg zu gehen (wie in einer Antwort darauf hingewiesen), aber wenn meine Ansicht ein einfaches Mock-Objekt ist, wie versende ich diese Ereignisse?

Antwort

1

Wenn Ihre Ansicht normalerweise Ereignisse löst dann das Beste, was ist Ihre Mock-Objekte auch das tun haben. Die Mock-Objekte sind dazu gedacht, die Schnittstelle zu verspotten, und versendete Ereignisse sind Teil dieser Schnittstelle (obwohl nicht immer ein gut dokumentierter und sichtbarer Teil). Es bedeutet auch, dass Sie die Controller auf dieselbe Weise testen, wie sie verwendet werden.

Natürlich, wenn Sie Ihre Ansicht Ereignisse normalerweise nicht versenden dann denke ich würde es normalerweise öffentliche Methoden verwendet, und Sie sollten das gleiche tun.

+0

Aber dann, wie auslösen ich diese Ereignisse, wenn meine Ansicht „stumm“ ist? – subb

+0

Das bedeutet, dass du deinen Mocks ein paar zusätzliche Sachen hinzufügst, aber ich würde Methoden wählen, die bestimmte Ereignisse auslösen können, die du dann aus deinen Tests heraus aufrufen würdest. 'viewMock.dispatchClickEvent()' oder ähnlich. – workmad3

0

Da Sie die Frage nicht mit einer Sprache markiert haben, weiß ich nicht, ob dies funktionieren wird, aber haben Sie darüber nachgedacht, Reflexion und die Ausübung der geschützten/private Controller-Methoden, die Art und Weise verwenden? Aus meiner Sicht sollten Sie testen, ob die Methode korrekt funktioniert. Sie können dies tun, indem Sie sie über Reflektion aufrufen, wenn Ihre Sprache dies unterstützt. Sie benötigen andere Tests, um sicherzustellen, dass Ihre Ereignishandler ordnungsgemäß eingerichtet sind. Wenn Sie über Code verfügen, mit dem Sie die Ereignisse ausgelöst haben, müssen Sie testen, ob die Ereignisse ordnungsgemäß ausgelöst wurden.

Verwandte Themen