He visto algunas preguntas aquí de personas que piden críticas por sus pruebas unitarias. No parece que se cierren, así que me gustaría hacer lo mismo.Uso dinámico con pruebas unitarias
Aumenté estas pruebas, que creo que se hacen más legibles mediante el uso de dynamic
, pero me preguntaba si alguien en la comunidad SO tenía algo que agregar.
Sé que el uso de la dinámica es, por alguna razón, muy controvertido, y por alguna razón comienza guerras de religión entre los desarrolladores de C#. Realmente espero evitar eso; Sólo estoy tratando de escribir algunas buenas pruebas para ayudar a hacer mi trabajo :)
[TestMethod]
public void TestAllocation() {
SearchView.StubPropertyNumValueThenSetUpSearchView<WellDetail>("TX", Property.WorkingInterestTaxSubtypeId);
Presenter.SetUpPhaseAndFmvValues(Phase.PhaseIdForForRenderAppraiser, 1000);
AddTheseItems(
new { PropNum = "pn1", CAN = "can1", MostRecentFmv = 10 },
new { PropNum = "pn1", CAN = "can1", MostRecentFmv = 10 },
new { PropNum = "pn1", CAN = "can1", MostRecentFmv = 10 },
new { PropNum = "pn1", CAN = "can1", MostRecentFmv = 10 },
new { PropNum = "pn1", CAN = "can2", MostRecentFmv = 40 },
new { PropNum = "pn1", CAN = "can2", MostRecentFmv = 40 },
new { PropNum = "pn1", CAN = "can2", MostRecentFmv = 40 },
new { PropNum = "pn2", CAN = "can1", MostRecentFmv = 50 },
new { PropNum = "pn2", CAN = "can1", MostRecentFmv = 50 });
Presenter.Process(SearchView, ItemsToProcess);
AssertTheseItemsExist(
new { NumberOfTimes = 4, PropNum = "pn1", CAN = "can1", FmvCalculated = 100 },
new { NumberOfTimes = 3, PropNum = "pn1", CAN = "can2", FmvCalculated = 400 },
new { NumberOfTimes = 2, PropNum = "pn2", CAN = "can1", FmvCalculated = 500 });
}
private void AddTheseItems(params dynamic[] MassUpdateDtos) {
foreach(dynamic item in MassUpdateDtos)
ItemsToProcess.Add(new MassFMVUpdateDTO(new WellDetail() { PropertyNum = item.PropNum, CountyAccountNum = item.CAN }, new FMVHistory(), 0, item.MostRecentFmv));
}
private void AssertTheseItemsExist(params dynamic[] uniqueTargets) {
foreach (dynamic target in uniqueTargets)
Assert.AreEqual(target.NumberOfTimes, ItemsToProcess.Count(f => f.PropertyNum == target.PropNum && f.CountyAccountNum == target.CAN && f.FMV == target.FmvCalculated));
}
¿Cuál es la ventaja de usar 'dynamic' en su caso? –
En general no encuentro ningún problema con esto y me inclino anti-dinámico. La pregunta que haré es: ¿realmente salvaste algo al no crear una pequeña clase privada con propiedades automáticas para PropNum, CAN, etc.? Todavía está estrechamente vinculado entre la creación de los tipos anónimos y su uso, y el compilador no lo ayudará. Si eres bueno con eso, y tu equipo es bueno con eso, entonces ve por ello. –
@Daniel Creo que solo hace que las pruebas sean mucho más legibles; los enfoca en las piezas de datos particulares que son relevantes. El método AddTheseItems muestra cuán inflada sería la prueba si tuviera que usar los objetos apropiados, tipados estáticamente (IMO). –