.NET的Shouldly断言库以某种方式知道调用断言方法的表达式,因此它能够将它显示在消息中.我试图找出它是如何工作但在源代码中丢失了.我怀疑它会查看已编译的代码,但我真的很想知道这是如何发生的.从文档中
map.IndexOfValue("boo").ShouldBe(2); // -> map.IndexOfValue("boo") should be 2 but was 1
Run Code Online (Sandbox Code Playgroud)
不知何故应该知道表达式map.IndexOfValue("boo")并且能够在测试失败消息中显示它.有谁知道这是怎么回事?