gpt4 book ai didi

javascript - 尝试从 Jasmine 访问 Backbone 模型时出现 ReferenceError?

转载 作者:行者123 更新时间:2023-11-28 08:46:25 25 4
gpt4 key购买 nike

我认为这只是一个 JavaScript 范围问题。

我正在尝试向 Backbone 应用程序添加一些 Jasmine 测试,但我不知道如何从 Jasmine 设置中访问 Backbone 模型。

这是我当前的应用程序结构( main.js 是我的 Backbone 应用程序):

index.html
js/
main.js
vendor/
backbone.js
jquery.min.js // etc
tests/
SpecRunner.html
spec/
testSpec.js

main.js的内容是这样的,从index.html开始一切运行OK :

$(function(){
var Todo = Backbone.Model.extend({
defaults: function() {
return {};
},
... etc

SpecRunner.html 中的文件如下所示:

  <!-- include source files here... -->
<script src="/js/vendor/jquery-1.10.2.min.js"></script>
<script src="/js/vendor/underscore.js"></script>
<script src="/js/vendor/backbone.js"></script>
<script src="/js/main.js"></script>

<!-- include spec files here... -->
<script type="text/javascript" src="spec/testSpec.js"></script>

我已经在testSpec.js中编写了这个测试,但失败了 ReferenceError: Todo is not defined :

describe("Todo tests", function(){ 
var todo = new Todo("Get the milk", "Tuesday");
it("should be correctly defined", function(){
expect(todo).toBeDefined();
});
it("should have the correct title", function(){
expect(todo.title).toBe("Get the milk");
});
});

我如何获得 Todo 范围?我试过window.Todo但这也无济于事。

最佳答案

正如我们在 Backbone reference 中看到的那样。

constructor / initialize new Model([attributes], [options]) When creating an instance of a model, you can pass in the initial values of the attributes, which will be set on the model.

构造函数需要使用对象字面量(键值对)进行初始化,如下所示:

new Book({
title: "One Thousand and One Nights",
author: "Scheherazade"
});

因此您需要将代码更改为:

var todo = new Todo({   
task: "Get the milk",
dayOfWeek: "Tuesday"
});

更新:

在这里,您在 jquery 函数范围内声明了 Todo,并且您尝试从外部访问。

$(function(){
var Todo = Backbone.Model.extend({
defaults: function() {
return {};
},
etc...
}
}

你有两个选择,将 Todo 声明为全局,不推荐,但主要用于 Backbone 样本:

$(function(){
window.Todo = Backbone.Model.extend({
defaults: function() {
return {};
},
etc...
}
});

您也可以尝试在声明后调用 jquery 函数:

$(function(){
var Todo = Backbone.Model.extend({
defaults: function() {
return {};
},
etc...
}
})();

关于javascript - 尝试从 Jasmine 访问 Backbone 模型时出现 ReferenceError?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19727332/

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