我希望如下:
var a = Is.EqualTo("OK").ApplyTo("OK").IsSuccess;
var b = Is.Not.EqualTo("OK").ApplyTo("OK").IsSuccess;
要返回不同的结果,但它们都是真的。有人可以解释我错过了什么吗?
我希望在我自己的测试代码中使用NUnit的约束检查,但在调用例如断言。但是这种行为不是我的预期。
答案 0 :(得分:2)
我必须在调试器中设置一个绝对确定的测试,但乍一看,这就是我认为正在发生的事情......
NUnit使用内部运算符和操作数堆栈来解析流畅的语法。 Is.Not.EqualTo(“OK”)生成一个EqualConstraint,其中Not运算符保存在堆栈中。您的ApplyTo调用针对EqualConstraint运行。
我怀疑如果你在同等约束之后插入对Resolve()的调用,结果将如你所愿。
var b = Is.Not.EqualTo("OK").Resolve().ApplyTo("OK").IsSuccess;
事实上,约束运算符是用于直接用于测试的语法糖,而不是更普遍的使用。