vendredi 26 juin 2015

Change value of parameter in NSubstitute

I have this method to mock with NSubstitute:

public T VoerStoredProcedureUit<T>(string naam, params SqlParameter[] parameters)

The test method using it sends 2 SqlParameters to this method. VoerStoredProcedureUit is supposed to change the values of these parameters so the tested method can extract that.

I created the following with NSubstitute:

SqlParameter[] param =
    {
        new SqlParameter("@pat_id", SqlDbType.BigInt) {Direction = ParameterDirection.Output, Value = "Melding"},
        new SqlParameter("@Melding", SqlDbType.VarChar, 4096) {Direction = ParameterDirection.Output, Value = 2}
    };
    productieVerbinding.VoerStoredProcedureUit<PatientNieuwResultaat>(Arg.Any<string>(),
        Arg.Any<SqlParameter[]>()).ReturnsForAnyArgs(x =>
        {
            x[1] = param;
            return PatientNieuwResultaat.Succes; 
        });

The setup however rises an exception:

A first chance exception of type 'NSubstitute.Exceptions.ArgumentIsNotOutOrRefException' occurred in NSubstitute.dll

Additional information: Could not set argument 1 (SqlParameter[]) as it is not an out or ref argument.

How do you return a value if the method uses implicit by reference values?

Aucun commentaire:

Enregistrer un commentaire