0

テキストボックスには通常の RequiredValidator を使用できますが、ラベルには使用できないため、カスタムバリデーターを追加し、JQuery 関数を使用して検証します。すべて正常に動作しますが、単体テストできるようにしたいと思います。

この機能をテストするには、どのような変更を行う必要がありますか:

function LabelRequired_Validate(sender, args) {
    if (sender == $("#ctl00_cphMain_Agent2_Agent_Agent_LabelValidator1")[0]) {
        if ($("#ctl00_cphMain_Agent2_Agent_Agent_ValueLabel")[0].innerText.length > 0) {
            args.IsValid = true;
        } else {
            args.IsValid = false;
        }
    } else {
        args.IsValid = true;
    }
}

このQUnitテスト(または同様のもの)で:

test("Servicing_Topup_Branch_label_is_valid", function() {
    var span = $("span[id$=ValueLabel]");
    $(span).text(10 + " characters long");

    var args = { IsValid: true, Value: "" };
    LabelRequired_Validate($(span), args)

    ok(args.IsValid == true, "Validation Passed!");
});

これが私のカスタムバリデータです:

<asp:CustomValidator ID="LabelValidator1" runat="server" ErrorMessage="<%$Resources:Main,RequiredFieldWarning %>"
        Display="Dynamic" ClientValidationFunction="LabelRequired_Validate" EnableViewState="False"
        class="alertMsg">
    </asp:CustomValidator>
4

1 に答える 1

0

ターゲット関数とテスト関数の両方にいくつかの変更を加えました。仕組みは次のとおりです。

ターゲットに:

function LabelRequired_Validate(sender, args) {
    if (sender == $("span[id$=LabelValidator1]")[0]) {
        if ($("span[id$=ValueLabel]")[0].innerText.length > 0) {
            args.IsValid = true;
        } else {
            args.IsValid = false;
        }
    } else {
        args.IsValid = true;
    }
} 

そしてテストへ:

test("Servicing_Topup_Branch_label_required_is_valid", function() {
    expect(2);

    var span1 = $("span[id$=LabelValidator1]");
    var span2 = $("span[id$=ValueLabel]");

    $(span2).text(18 + " characters long");
    var args = { IsValid: true, Value: "" };
    LabelRequired_Validate(span1[0], args)

    ok(args.IsValid == true, "Not empty label returns Valid - Passed!");


    $(span2).text("");
    args = { IsValid: true, Value: "" };
    LabelRequired_Validate(span1[0], args)

    ok(args.IsValid == false, "Empty label returns NotValid - Passed!");

});
于 2012-08-09T14:35:15.260 に答える