Код: Выделить всё
public bool Execute(IDynamicDatabaseConnection dbConn, List loadObjects, out List result)
{
result = new List();
// Perform the load for each form grid
foreach (DynamicGrid grid in loadObjects)
{
// Execute the stored proc to load the grid data
IEnumerable storedProcResponse = ExecuteGridDataLoadStoredProcedure(dbConn, storedProcedureName);
result.Add(new DynamicGridValue(grid, response));
}
}
return true;
}
Код: Выделить всё
private IEnumerable ExecuteGridDataLoadStoredProcedure(IDynamicDatabaseConnection dbConn, string storedProcedureName)
{
const string parameterReturnMessage = "@Return_Message";
const string parameterDfPKey = "@DFPkey";
const string parameterParentDfPKey = "@ParentDFPkey";
const string parameterResult = "@Result";
var dynamicParameters = new DynamicParameters();
dynamicParameters.Add(parameterReturnMessage, string.Empty, DbType.String, ParameterDirection.Output, int.MaxValue);
dynamicParameters.Add(parameterDfPKey, long.TryParse(DFPkey.ToString(), out long dfPkeyInt) ? dfPkeyInt : 0, DbType.Int64, ParameterDirection.Input, int.MaxValue);
dynamicParameters.Add(parameterParentDfPKey, Convert.ToInt64(ParentDFPkey), DbType.Int64, ParameterDirection.Input, int.MaxValue);
dynamicParameters.Add(parameterResult, 0, DbType.Int64, ParameterDirection.ReturnValue, int.MaxValue);
// Retrieve data using Dapper
var spResponse = dbConn.Query("StoreProcName", dynamicParameters, commandType: CommandType.StoredProcedure);
// Retrieve the output parameter
var returnMessage = dynamicParameters.Get("@Return_Message");
var errorCode = dynamicParameters.Get(parameterResult);
// Check if there's an error message
if (!string.IsNullOrEmpty(returnMessage))
{
throw new DynamicFormException($"Stored Procedure Error: {returnMessage} (Code: {errorCode})");
}
return spResponse;
}
Код: Выделить всё
[TestMethod]
public void Should_ExecuteStoredProcedureAndReturnCorrectXmlResponse()
{
// Arrange
var grid = new DynamicGrid
{
DataBindingTypeID = (int)GridDataBindingType.StoredProcedure,
GridCode = "TestGrid",
DataBindingGetDFStoredProcedureDefinitionID = 1
};
var gridDataSource = new DataSource();
var queryParameterValues = new Dictionary();
var strategy = new DynamicLoadStrategyGridData(grid, gridDataSource, DFPKey, USER_ID, USER_ACCESS_RIGHTS_IDS, queryParameterValues, PARENT_DFPKEY);
var loadObjects = new List { grid };
var dbConnMock = A.Fake();
dynamic spResponse = new ExpandoObject();
spResponse.key = "Id";
spResponse.AdditionalData = "12";
List spResponseMock = new List() { spResponse };
A.CallTo(() => dbConnMock.Query(A._, A._, A._, A._, A._, A._)).Returns(spResponseMock);
// Act
var result = strategy.Execute(dbConnMock, loadObjects, out _);
// Assert
Assert.IsTrue(result);
}
Как мне установить макет для
Код: Выделить всё
var spResponse = dbConn.Query( storedProcedureName,
dynamicParameters,
commandType: CommandType.StoredProcedure );
ОБНОВЛЕНИЕ:
p>
Тоже попробовал,
Код: Выделить всё
List spResponseMock = new List()
{
new Dictionary() { { "Id", 1 } }
};
// Assign mock response to spResponse
IEnumerable spResponse = spResponseMock;
A.CallTo(() => dbConnMock.Query(A._, A._, A._, A._, A._, A._)).Returns(spResponse);
Подробнее здесь: https://stackoverflow.com/questions/789 ... unit-tests