Proč spojuji AX, dočasnou tabulku, jednotkový test a DuplicateKeyException? Protože když je dám dohromady, chová se to dost zvláštně.
Mám dočasnou tabulku, do ní vkládám nějaká data a ve výjimečném případě, kdy se vyskytne duplicita, prostě odchytím DuplicateKeyException a daný insert jednoduše ignoruji. A to funguje správně.
Problém nastane, když chci tento případ otestovat unit testem. V ten okamžik totiž AX nevyhodí DuplicateKeyException
ale Info
(Exception::Info
), kterou pochopitelně nezpracovávám a test skončí neočekávanou a neodchycenou výjimkou. Proč se to děje? Nemám tušení, ale zkusím se Microsoftu zeptat.
Jistě, není problém to obejít, třeba udělat select do tabulky před pokusem o vložení nebo rezignovat na unit test – ale ani jedno mě moc netěší.
Zkoušel jsem to se stejným výsledkem v AX2009 i AX2012 (v té to platí jen pro InMemory tabulky, ne pro TempDB). Pokud vás to zajímá blíže, můžete si stáhnout ukázkový kód.