我有关于jquery的这个问题。 我正试图测试两条路径:
it("should return true when country is valid", function() {
var validCountry = "Germany";
$("#fld_country option:selected").val(validCountry);
expect(isValid("#fld_country")).toBeTruthy();
});
it("should return false when country is invalid", function() {
var invalidCountry = "";
$("#fld_country option:selected").val(invalidCountry);
expect(isValid("#fld_country")).toBeFalsy();
});
validCountry
和invalidCountry
是从下拉列表中选择的选项。
这是isValid函数:
function isValid(selector) {
if (selector === "#fld_country option:selected") {
return validator.isSelectedField(selector);
}
else return validator.isFieldEmpty(selector);
}
这是isSelectedField
:
isSelectedField: function (selector) {
return $.trim($('selector option:selected').html())
问题是因为:
失败了validate registration form should return true when country is valid
和
validate registration form should return false when country is invalid FAILED
我不知道问题是什么......有什么想法吗?
答案 0 :(得分:1)
由于isValid
值不匹配,您的validator.isFieldEmpty(selector)
函数将始终返回selector
- 您将#fld_country
与#fld_country option:selected
进行比较。
也许这就是问题所在。
// EDIT
行。确保您正在设置正确的模板。你提到你使用jasmine-jquery灯具。在测试运行之前,您可以检查select是否有任何选项。
我相信你试图通过jquery设置选定的选项 - 这有一个bug,应该是:
$("#fld_country").val(validCountry);
如果你的<select>
看起来像这样(那么请检查你的模板)
<select id="fld_country">
<option value="Poland">Poland</option>
<option value="Germany">Germany</option>
</select>
您遇到的另一个问题是isSelectedField
功能。而不是
return $.trim($('selector option:selected').html())
你可能希望得到类似的东西:
return $.trim($(selector + ' option:selected').html())
因为你想使用selector
变量而不是字符串。