我尝试验证对带有Expression<Func<T, U>>
类型参数的方法的调用,但我无法让NSubstitute识别它。
public interface IFoo<T>
{
void DoThing<TProperty>(TProperty i, Expression<Func<T, TProperty>> expression);
}
// this almost works, but throws AmbiguousArgumentException
myFoo.Received(1).DoThing(Arg.Is(10), Arg.Any<Expression<Func<MyClassType, long>>>());
答案 0 :(得分:1)
是的NSubstitute可以处理带表达式的调用。以下测试通过我:
public class MyClassType {
public long Property { get; set; }
}
public interface IFoo {
void DoThing(int i, Expression<Func<MyClassType, long>> expression);
}
[Test]
public void ReceivedWithAnyExpression() {
var myObj = Substitute.For<IFoo> ();
myObj.DoThing (10, x => x.Property);
myObj.Received(1).DoThing(Arg.Is(10), Arg.Any<Expression<Func<MyClassType, long>>>());
}
你得到的编译错误是什么?
答案 1 :(得分:0)
因此,在试图弄清楚为什么我的测试失败但David Tchepak工作的时候,我意识到我的原始问题不包括属性的类型也是通用的(问题已经更新)。当我对David的代码进行更改时,我开始看到与原始代码中相同的错误。
我找到了解决方案,但是:
$("#showSelection").bind("click", function () {
alert("in");
//unbinding the button click
$('#showSelection').unbind('click');
});
$("#kendowindow").click(function(){
alert("in2");
//want to bind the click event again but not working
$('#showSelection').bind('click');
});