NUnit是且是。不等于约束

NUnit是且是。不等于约束,nunit,Nunit,我预期会出现以下情况: var a = Is.EqualTo("OK").ApplyTo("OK").IsSuccess; var b = Is.Not.EqualTo("OK").ApplyTo("OK").IsSuccess; 返回不同的结果,但它们都是真的。有人能解释一下我遗漏了什么吗 我希望在我自己的测试代码中使用NUnit的约束检查,但在调用例如Assert的外部。但这种行为不是我所期望的。我必须在调试器中设置一个测试以确保绝对可靠,但乍一看,我认为正在发生的是 NUnit使用运算符

我预期会出现以下情况:

var a = Is.EqualTo("OK").ApplyTo("OK").IsSuccess;
var b = Is.Not.EqualTo("OK").ApplyTo("OK").IsSuccess;
返回不同的结果,但它们都是真的。有人能解释一下我遗漏了什么吗


我希望在我自己的测试代码中使用NUnit的约束检查,但在调用例如Assert的外部。但这种行为不是我所期望的。

我必须在调试器中设置一个测试以确保绝对可靠,但乍一看,我认为正在发生的是

NUnit使用运算符和操作数的内部堆栈来解析fluent语法。Is.Not.EqualTo(“OK”)生成一个EqualConstraint,堆栈上保存一个Not运算符。你的ApplyTo调用与EqualConstraint相反

我怀疑,如果您在equal约束之后立即中断了对Resolve()的调用,那么结果将与您预期的一样

var b = Is.Not.EqualTo("OK").Resolve().ApplyTo("OK").IsSuccess;

事实上,约束运算符是一种语法糖,用于直接在测试中使用,而不是更一般的用途。

我必须在调试器中设置一个测试以确保绝对可靠,但乍一看,我认为正在发生的事情如下所示

NUnit使用运算符和操作数的内部堆栈来解析fluent语法。Is.Not.EqualTo(“OK”)生成一个EqualConstraint,堆栈上保存一个Not运算符。你的ApplyTo调用与EqualConstraint相反

我怀疑,如果您在equal约束之后立即中断了对Resolve()的调用,那么结果将与您预期的一样

var b = Is.Not.EqualTo("OK").Resolve().ApplyTo("OK").IsSuccess;

事实上,约束运算符是语法糖,用于直接在测试中使用,而不是更一般的用途。

谢谢,非常有用,你说得对。Resolve()修复了它。谢谢,非常有用,你说得对。Resolve()修复了它。