测试.NET的WebBrowser.ObjectForScripting

时间:2015-03-18 18:25:42

标签: javascript c# unit-testing webbrowser-control

我正在尝试使用WebBrowser.ObjectForScripting来“扩充”JavaScript。一段“扩充”JavaScript有一个函数,它接受一个对象,做一些事情,并调用该对象上提供的回调。我也希望快速失败并在回调不是函数时抛出异常,换句话说,我会写这样的东西(这是一个非常简单的例子,真正的函数验证可能包括它有{{ 1}}和apply):

call

JavaScript世界中的调用如下所示:

[ComVisible(true)]
public class MyScriptingObject
{
  public void Foo(dynamic obj)
  {
    Type objType = obj.GetType();
    var toStringRes = objType.InvokeMember(
                                "toString",
                                System.Reflection.BindingFlags.InvokeMethod, 
                                null, 
                                obj, 
                                null);

    if (!toStringRes.StartsWith("function")) 
    {
      throw new Error("`data.callback` must be a function");
    }
    //do something useful
    obj.callback("some data");
  }
}

我如何单元测试方法window .external .Foo( { callback: function (data) { alert('That is what we have got from C# ' + data); } }); ?我提供哪些测试数据?

最终,我想知道是否已调用Foo()。但是,为了进入执行阶段,我们需要首先通过验证。

问题是传递数据的方式是obj.callback()既是方法又有obj.callback,可能还有toString()

0 个答案:

没有答案