AX, dočasná tabulka, Unit Test a DuplicateKeyException

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.