如此,因爲小巧玲瓏的使用擴展方法我包裹起來,我需要這樣的功能,我可以存根出來: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.
}
那麼,如何實現這一最後L個國家統計局。我試過dynParams.Get<string>("param1")
,但後來讀了另一篇文章,說你需要先閱讀。
我已經通過在DapperWrapper
類中封裝DynamicParamters
並通過Dictionary<string, object>
來完成此操作,但這不僅會增加代碼量。它還增加了DapperWrapper
中不可測試代碼的數量,這是不理想的。
忽視的事實是該規範將無法運行 - 它已被有意縮小