TL; DR Non ci sono metodi in VIPER che restituiscono alcun valore, quindi come testarli?
Ragionamento:
In VIPER, ogni livello comunica con un altro livello mantenendo un riferimento astratto ad esso (Protocolli / Interfacce).
Ad esempio, View ha riferimento a un Presenter. Se la vista chiama presenter.getSomething () presenter non restituirà immediatamente un valore. Invece, il presentatore avrà un riferimento di vista e, dopo aver completato le sue operazioni, il presenter chiamerà view.setSomething (qualcosa).
Questo flusso è coerente su tutti i flussi tra i livelli. E per parafrasarlo, le classi che implementano questi protocolli / interfacce, espongono solo i metodi che implementano da protocolli e interfacce come pubblici. Durante la scrittura di test puoi accedere solo a questi metodi pubblici e, tutti questi metodi restituiscono null.
L'argomento per cui è possibile restituire un valore non è sufficientemente valido nei casi reali in cui le operazioni eseguite dopo una chiamata devono essere asincrone, quindi deve utilizzare la struttura di callback di VIPER invece di restituire direttamente un valore su chiamata.
Tuttavia, ogni post di blog, articolo e video spiega che VIPER afferma che rende il codice testabile per TDD.
Modifica Esiste una domanda metodo di prova dell'unità vuota che può sembrare il duplicato di questo, ma la mia domanda riguarda il comportamento simile non come lo testiamo, ma come l'architettura limita l'approccio (a mio modo di vedere almeno).