Mi chiedo come aggirare questo. Sto usando Nibernato e fluente.Unit test e nibernate?
ho una classe di dominio come questo
public class User
{
public virtual int UserId {get; private set;}
}
questa sembra essere la convenzione quando si fa NHibernate perché impedisce alle persone di impostazione e id come si è auto generato.
Ora il problema si presenta quando sono un test unitario.
Ho un codice reptivo in un repository che sto prendendo in giro, quindi sto solo testando il mio livello di servizio. Il problema arriva quando succede.
User user = repo.GetUser(email);
questo dovrebbe restituire un oggetto utente.
quindi voglio usare moq per fare questo
repo.Setup(x => x.GetUser(It.IsAny<string>())).Return(/* UserObject here */)
ora qui è il problema
ho bisogno di fare l'oggetto d'uso e metterlo nella parte di ritorno.
quindi vorrei fare qualcosa di simile
User user = new User()
{
UserId = 10,
}
Ma questo è dove sta il problema che ho bisogno di impostare l'ID, perché io in realtà lo uso in seguito per fare un po 'LINQ su alcune collezioni (nel livello di servizio come non sta colpendo il mio db quindi non dovrebbe essere nel mio repository) quindi ho bisogno di averlo impostato ma non posso impostarlo perché è un set privato.
Quindi cosa dovrei fare? Dovrei semplicemente rimuovere il privato o c'è un altro modo?
Grazie questo funziona solo perfettamente. Potrei avere i sintomi del numero 2. Devo solo prendere in giro tante cose. Sto cercando di mantenere anche solo ciò che ho bisogno di testare. Ad esempio, non mockò un userName per l'utente poiché non è usato nel metodo. Mi piacerebbe provare il moq di autofixture ma non riesco a capire come usare veramente e sembra che non ci siano tutorial reali su di esso, quindi non posso determinare se questo mi possa aiutare o no. – chobo2