Javascript 设置onClick属性的单元测试

Javascript 设置onClick属性的单元测试,javascript,html,unit-testing,qunit,Javascript,Html,Unit Testing,Qunit,我有以下(简化)代码: i、 我正在传入一个字符串(onclick函数),并将对象的onclick事件设置为等于传入的字符串的值 就这种方法是否有效而言,是的,它在生产中有效 然而,在QUnit中正确地进行单元测试时,我遇到了一些问题 QUnit.test("addOnclickFunction should return the an object with onClickproperty", function(assert) { var objectTest; assert

我有以下(简化)代码:

i、 我正在传入一个字符串(onclick函数),并将对象的onclick事件设置为等于传入的字符串的值

就这种方法是否有效而言,是的,它在生产中有效

然而,在QUnit中正确地进行单元测试时,我遇到了一些问题

QUnit.test("addOnclickFunction should return the an object with onClickproperty", function(assert) 
{
    var objectTest;
    assert.equal(objectTest,undefined);
    objectTest = addOnclickFunction("functionCall");
    assert.notEqual(objectTest.onclick,null);
    assert.equal(objectTest.onclick,"functionCall");
});
在这种情况下,前2个单元测试将通过。当objectTest.onclick返回时,最后一个将不会显示

function(){
  [code]
}

有没有办法让它告诉我函数名是什么?

您可以获取实际的函数对象并检查
func.name
。它的语法是什么?这可能有助于获取单击所有单击处理程序。至于名称本身,如果您有
var func=function myHandler(){}
,则
func.name
将返回字符串“myHandler”。因此,您可以获取处理程序(因为可能有多个)并检查名称。我对myHandler名称不感兴趣。我对函数{}中的任何内容感兴趣,即作为onclick函数传入的字符串出现在那里。在这种情况下,您可以检查函数的
toString
,但我建议不要这样做。我认为单元测试不会有用,因为它太集中了,并且没有测试有意义的东西。如果您想测试实现,那么只需为特定函数本身编写一个单元测试,并测试它是否正确运行。然后,您可以进行单独的测试,以检查是否将正确的函数添加为处理程序。检查是否添加了正确的函数,以及其中是否任意包含某些内容是不明智的。您可以获取实际的函数对象并检查
func.name
。其语法是什么?这可能有助于获取单击所有单击处理程序。至于名称本身,如果您有
var func=function myHandler(){}
,则
func.name
将返回字符串“myHandler”。因此,您可以获取处理程序(因为可能有多个)并检查名称。我对myHandler名称不感兴趣。我对函数{}中的任何内容感兴趣,即作为onclick函数传入的字符串出现在那里。在这种情况下,您可以检查函数的
toString
,但我建议不要这样做。我认为单元测试不会有用,因为它太集中了,并且没有测试有意义的东西。如果您想测试实现,那么只需为特定函数本身编写一个单元测试,并测试它是否正确运行。然后,您可以进行单独的测试,以检查是否将正确的函数添加为处理程序。检查是否添加了正确的函数,以及其中是否任意包含某些内容,这是不明智的。
function(){
  [code]
}