/// <summary> /// Creates a builder which can build a database command tester. /// </summary> /// <param name="commandText">The expected command text.</param> /// <param name="commandType">The expected command type.</param> /// <param name="commandTimeout">The expected command timeout.</param> public DbCommandTestBuilder(string commandText, CommandType commandType = CommandType.Text, int commandTimeout = 30) { ArgumentNullGuard.NotNullOrWhiteSpace(commandText, nameof(commandText)); IDataParameterCollection dataParameterCollection = MockRepository.GenerateMock <IDataParameterCollection>(); dataParameterCollection.Stub(m => m.Count) .WhenCalled(e => e.ReturnValue = _dataParameterCollection.Count) .Return(0) .Repeat.Any(); dataParameterCollection.Stub(m => m[Arg <string> .Is.Anything]) .WhenCalled(e => e.ReturnValue = _dataParameterCollection.SingleOrDefault(m => string.CompareOrdinal((string)e.Arguments.ElementAt(0), m.ParameterName) == 0)) .Return(null) .Repeat.Any(); _expectedDbCommand = MockRepository.GenerateMock <IDbCommand>(); _expectedDbCommand.Stub(m => m.CommandText) .Return(commandText) .Repeat.Any(); _expectedDbCommand.Stub(m => m.CommandType) .Return(commandType) .Repeat.Any(); _expectedDbCommand.Stub(m => m.CommandTimeout) .Return(commandTimeout) .Repeat.Any(); _expectedDbCommand.Stub(m => m.Parameters) .WhenCalled(e => e.ReturnValue = dataParameterCollection) .Return(null) .Repeat.Any(); }
public void SetupTestFixture() { _parameterName = "Given name"; _parameterValue = new { Property = "given value" }; _parameterNumber = 5; _dbCommand = MockRepository.GenerateMock<IDbCommand>(); _dataParameter = MockRepository.GenerateMock<IDbDataParameter>(); _parameters = MockRepository.GenerateMock<IDataParameterCollection>(); _parameters.Stub( p => p.Add( _dataParameter ) ).Return( _parameterNumber ); _dbCommand.Stub( c => c.CreateParameter() ).Return( _dataParameter ); _dbCommand.Stub( c => c.Parameters ).Return( _parameters ); _result = DbCommandExtensions.AddParameter( _dbCommand, _parameterName, _parameterValue ); }