第一次使用Jasmine,还在尝试处理事情。使用 2.0.0 独立版本。我的 SpecRunner.html 中有以下几行:
//... jasmine js files included here ...
<!-- include source files here... -->
<script type="text/javascript" src="lib/jasmine-jquery.1.3.1.js"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script type="text/javascript" src="src/admin.js"></script>
//... the rest of my scripts, and then my specs ...
所以我肯定包括我的 admin.js 文件,我在其中声明了以下一组函数:
$(function() {
function deleteLink(linkHref, callback) {
$.ajax({
type: "POST",
url: "/delete?href=" + linkHref,
success: callback
});
}
function redirectHome() {
location.assign("/");
}
$('.delete_button').on('click', function() {
var buttonUrl = $(this).parent().data('link-href');
if( confirm("Are you sure you want to remove this link?") ) {
deleteLink(buttonUrl, redirectHome);
}
});
});
我正在尝试使用用于测试 AJAX 回调的建议格式来测试此功能(它在浏览器中完全符合我的预期) :
describe("Admin library", function() {
describe(".delete_button event handling", function() {
beforeEach(function() {
loadFixtures("delete_button.html");
});
// other tests here...
it("should set the location to /", function() {
spyOn($, "ajax").and.callFake(function(e) {
e.success();
});
var callback = jasmine.createSpy();
deleteLink("http://some.link.href.com", callback);
expect(callback).toHaveBeenCalled();
});
});
});
但是,测试总是失败并出现以下错误:
Can't find variable: deleteLink in file:///path/to/my/app/jasmine/spec/adminSpec.js
我目前正在测试未在这些文件中明确声明的其他 jasmine/spec 文件中的函数。我认为这就是将脚本包含在 SpecRunner.html 文件中的意义所在,对吧?关于这里发生了什么的任何想法?