gpt4 book ai didi

javascript - 如何使用spyOn模拟Jasmine中选择器的jQuery值?

转载 作者:行者123 更新时间:2023-12-01 05:27:14 25 4
gpt4 key购买 nike

我正在使用 AngularJS/Karma/Jasmine 编写一些单元测试,但无法让 Jasmine 的“spyOn”方法起作用。我使用spyOn后,我仍然得到 undefined对于该选择器。

问题

我遇到的问题是运行后

spyOn($("#username"), "val").and.returnValue("test@test.com");

我尝试像这样获取用户名的值:

$("#username").val();

它是undefined .

我想测试的代码

function isValidEmail() {
var email = $("#username").val();
var regex = /^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/;
return email.match(regex);
}

单元测试

'use strict';

describe('test/spec/controllers/validation.js - No controller', function () {

describe('email validation', function () {
it('should be true for valid emails', function() {
spyOn($("#username"), "val").and.returnValue("test@test.com");
var result = isValidEmail();
expect(result).toEqual(true);
});
});

});

有人看到我做错了什么吗?

最佳答案

您的问题是,每次调用 $("#username") 时,您都会得到一个不同的对象。因此,函数中的$("#username")不会被监视。

您应该监视 $.fn,它将由所有 jQuery 对象共享。

spyOn($.fn, 'val').and.returnValue('test@test.com')

关于javascript - 如何使用spyOn模拟Jasmine中选择器的jQuery值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39110446/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com