Devo passare un numero ID dal file delle caratteristiche?

0

Dire che ho un oggetto di dominio come questo:

public class Customer
{
    private Guid _id;
    private string _name;
    private Address _address;

    public Customer (Guid id, string name, Address address)
    {
       if (id == Guid.Empty)
                throw new ArgumentException();           
       if (name == "")
           throw new ArgumentException();
       if (address == null)
           throw new ArgumentException();
         _id = id;
        _address = address;
        _name= name;
    }
}

Voglio creare alcuni scenari Specflow per testarlo. Finora ho fatto (scenario Specflow nel file delle caratteristiche):

Given a name of Bert and an address of 1 The street, London, Greater London, L1 234 

Questo scenario Specflow mi sembra a posto, tuttavia sono consapevole che mi manca l'ID. L'ID viene creato all'interno del metodo di prova. Dovrei farlo invece (scenario specflow nel file delle caratteristiche):

Given a name of Bert and an address of 1 The street, London, Greater London, L1 234 and an id of 111-11-1111-11

Il primo approccio (senza ID) mi sembra corretto. Sono qui? Se utilizzo il primo approccio, come creo uno scenario per testare un ID vuoto?

Ogni singolo esempio che guardo online mostra come applicare Specflow a un semplice calcolatore o gioco. Nessuna di queste classi ha o necessita di ID.

    
posta w0051977 02.03.2018 - 09:25
fonte

3 risposte

1

Potrei non capire che cosa sia un "oggetto dominio", ma presumo che si tratti di una sorta di entità, cioè della sua parte del modello dell'applicazione che è persistente per esempio in un database. Supponendo che sia corretto, allora è un dettaglio di implementazione.

Specflow è uno strumento per testare requisiti / storie utente. Quindi Specflow non dovrebbe essere usato per testare direttamente i dettagli di implementazione.

Diventa quindi un caso se l'ID cliente è condiviso con il cliente, come nelle e-mail, nei moduli d'ordine e simili. Se lo è, è ragionevole supporre che avresti dei requisiti, e quindi degli scenari Specflow, attorno alla consegna di un cliente in base all'ID o all'indirizzo. Sarebbe piuttosto strano, tuttavia, avere il requisito che l'unico modo per trovare un cliente sia cercare sul loro nome, indirizzo e ID.

Considerando che se tale ID non viene mai esposto al cliente, allora non avrai i requisiti per farlo e quindi non interesserà Specflow.

In ogni caso, una cosa è certa: Specflow assolutamente non dovrebbe essere usato per testare un ID vuoto.

    
risposta data 02.03.2018 - 16:09
fonte
1

Credo che, di regola, si desidera mantenere la separazione logica tra i dettagli di implementazione incidentale e quei bit di segnale rilevanti per gli scenari di test.

Nel tuo caso, il nome e l'indirizzo sono qualcosa che ti interessa, ma qualsiasi id sarebbe soddisfacente. Quindi mi aspetto che il tuo scenario descriva il nome e l'indirizzo e che l'implementazione fornisca qualsiasi id che gli piace.

Vedi

risposta data 02.03.2018 - 14:24
fonte
-2

Vorrei cambiare l'oggetto dominio in questo modo:

public class Customer
{
    public Guid Id;
    public string Name;
    public Address Address;

    public Customer ()
    {
        this.Id = Guid.NewGuid();
    }
}

Quando crei un nuovo cliente, desideri sempre un nuovo ID unico.

Se stai deserializzando un oggetto cliente da un database o simile, vuoi essere in grado di impostare i singoli campi.

Questo ti dà la possibilità di non preoccuparti di cosa l'ID è nel tuo test e la certezza che l'Id sarà sempre popolato

    
risposta data 02.03.2018 - 13:07
fonte

Leggi altre domande sui tag