Reactive Banana 1.0.0 - Komponententest im MomentIO () Monad

8

Hier ist ein Beispiel für ein Ereignisnetzwerk, das ich verwendet habe, um das Verhalten bestimmter monadischer Aktionen zu untersuchen. Ich möchte einen prinzipientreuen Ansatz und nicht diesen Ad-hoc-Weg, meinen Code zu testen. Ich weiß, wie ich meine Funktionen testen kann, aber ich suche nach Best Practices für das Testen von Verhaltensweisen und Ereignissen, angesichts der neuen Designoptionen in reactive-banana 1.0.0

Ich verlasse viel, in der Hoffnung, dass ich nur das aufgenommen habe, was notwendig ist, um mein Problem zu veranschaulichen. Bitte lassen Sie mich wissen, wenn etwas fehlt, das enthalten sein sollte, um das Problem klarer zu machen.

%Vor%

Was der Puffer tun soll, sind akkumulierte Spielerbefehle (die dann woanders verarbeitet werden) und dann geleert werden, sobald ein bestimmter Stapel von Spielerbefehlen verarbeitet wurde. Beim nächsten Tick passiert es wieder von vorne.

Ich versuche sicherzustellen, dass der Puffer gelöscht wird, wenn es sein sollte, und akkumuliert Befehle wie es sein soll. Im Moment funktioniert der Code, und ich möchte Tests schreiben, um sicherzustellen, dass er weiter funktioniert, wenn ich das Spiel baue.

Ich könnte den Puffer Behavior getrennt vom Event Netzwerk im obigen Beispiel machen, aber was dann? Was ist der beste Weg, genaue Ergebnisse aus dem Test zu erhalten?

Bearbeiten: Update - Ich glaube diesen Link liefert genügend Hinweise. Ich werde es mir überlegen und morgen mit weiteren Einzelheiten berichten.

Bearbeiten: Aktualisieren - Ich habe einen Komponententest geschrieben. Ich werde nach GitHub hochladen, wenn es puerty ist, und dann posten. Der obige Link war sehr hilfreich, um herauszufinden, was zu tun ist.

Bearbeiten: Aktualisieren - Wenn Sie einen Stapeltest ausführen und es zu einem Fehler kommt und Sie ihn erneut ausführen, erhalten Sie eine Ausgabe, die besagt, dass Ihre Tests bestanden wurden. Das Ergebnis ist, ich bin nicht näher dran, dass ich gestern war. Ich habe Code und ein klareres Problem. Ich kann einen anderen Beitrag für das .ct

beginnen

Edit: Update - Ich habe einen Test, der auf eine Weise bricht, die hilfreich ist, aber ich weiß nicht, was ich genau machen soll. Ich habe das gesamte Projekt für den Kontext gepostet. Im Folgenden füge ich nur den Testcode, Fehler und einige Diskussionen ein.

%Vor%

Das Problem besteht darin, dass accumB ein Behavior in einem MomemtIO erstellt. Wenn ich bufferPopulated return ein IO Bool habe, wie kann ich das abgleichen?

Edit: Das Offensichtliche ist, die gewünschte Instanz zu schreiben. Ich denke, das ist wahrscheinlich ein Red-Hering. Was denken Sie. Ist das so einfach wie das Schreiben der MomentIO Bool Instanz?

Bearbeiten: Aktualisieren Ich denke, ich bin auf dem richtigen Weg. Ich habe den gesamten Testkabelbaumcode auskommentiert und die Signatur für bufferPopulated

geändert %Vor%

Ich glaube, das sollte funktionieren, aber hier ist der Fehler

%Vor%

Schauen wir uns MonadMoment von Reactive.Banana.Combinators

an %Vor%

m kann beliebig sein Monad , IO ist ein Monad . also liftMoment sollte Moment Behavior (BufferMap) auf IO Behavior (BufferMap) heben, warum nicht. Was stimmt nicht mit meinen Überlegungen?

    
Michael Litchard 09.11.2015, 15:59
quelle

1 Antwort

1

Quelle der Antwort kam von dieser vorherigen Antwort.

Testen in reactive-banane

interpretFramwork benötigt eine neue Signatur.

%Vor%     
Michael Litchard 18.11.2015, 23:30
quelle