Таким образом, потому что Щеголеватые используют методы расширения я завязал функцию мне нужно, чтобы я мог окурок его:MachineSpecs Модульного тестирования Щеголеватый
public interface IDapperWrapper
{
Task<IEnumerable<dynamic>> ExecuteQuery(string needArg, string sql, DynamicParameters parameterDictionary, CommandType commandType);
}
Я прошел в DynamicParameters
так что это означает, что мой код создает эти затем переходит к DapperWrapper
:)
Так что мой Specs
файл выглядит что-то вроде:
public class MyUnitTest : WithSubject<ClassCallingDapperWrapper>
{
protected static DynamicParameters DynamicParameters;
private Establish context =() =>
{
The<IDapperWrapper>()
.WhenToldTo(
x =>
x.ExecuteQuery(
Param.IsAny<string>(),
Param.IsAny<string>(),
Param.IsAny<DynamicParameters>(),
Param.IsAny<CommandType>()))
.Return(
(string org, string sql, DynamicParameters dynParm, CommandType cmdType) =>
{
DynamicParameters = dynParm;
return Task.FromResult(response);
});
}
private It should_call_dapper_with_correct_params =() =>
{
DynamicParameters dynParams = new DynamicParameters();
dynParams.Add("@param1", "123");
The<IDapperWrapper>().WasToldTo(x => x.ExecuteQuery(
NeededArg,
sql,
Params.Any<DynamicParameters>(),
CommandType.StoredProcedure));
};
// Here I want to check that the DynamicParameters static field has the same parameters as the one I passed through.
}
Так как я выполняю, что последний л ине. Я пробовал dynParams.Get<string>("param1")
, но потом прочитал еще одно сообщение, в котором говорится, что вам нужно сначала прочитать.
Исполнив это инкапсуляцией DynamicParamters
в DapperWrapper
класса и проходя через Dictionary<string, object>
, но не только делает это увеличение кода. Он также увеличивает количество не проверяемого кода в DapperWrapper
, что не является идеальным.
игнорировать тот факт, что эта спецификация не будет работать - она целенаправленно сократилась