尝试从 Jasmine 访问主干模型时出现参考错误
ReferenceError when trying to access Backbone models from Jasmine?
我认为这只是一个JavaScript范围的问题。
我正在尝试将一些 Jasmine 测试添加到 Backbone 应用程序中,但我无法弄清楚如何从我的 Jasmine 设置中访问 Backbone 模型。
这是我当前的应用程序结构(main.js
是我的主干应用程序):
index.html
js/
main.js
vendor/
backbone.js
jquery.min.js // etc
tests/
SpecRunner.html
spec/
testSpec.js
main.js
的内容是这样的,从index.html
开始都运行正常:
$(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");
});
});
如何获取待办事项范围?我已经尝试过window.Todo
但这也没有帮助。
正如我们在主干参考中看到的那样。
构造函数/初始化
new Model([attributes], [options])
创建模型实例时,可以传入 将在模型上设置的属性。
构造函数需要使用对象文本(键值对)启动,如下所示:
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 声明为全局,不推荐,但主要用于主干示例:
$(function(){
window.Todo = Backbone.Model.extend({
defaults: function() {
return {};
},
etc...
}
});
你也可以尝试在声明后调用 jquery 函数:
$(function(){
var Todo = Backbone.Model.extend({
defaults: function() {
return {};
},
etc...
}
})();
相关文章:
- 相位器状态未捕获参考错误
- 尝试从 Jasmine 访问主干模型时出现参考错误
- 全新车把安装会在首次运行时产生参考错误
- Dart 中的参考错误:按下按钮时未定义功能
- 参考错误:结帐页面上未定义付款
- 学习聚合物,获取参考错误:聚合物未定义
- 参考错误onnotification没有在推送通知cordova android中定义
- 未捕获的参考错误:谷歌没有定义谷歌图表
- 使用JS变量对PHP数组进行索引(预加载):;未捕获参考错误”;即使函数不是't调用
- 回波日期的参考错误
- 参考错误地理位置
- 参考错误:谷歌不是使用 ng-map GeoCoder 服务定义的
- 相位器未捕获参考错误:游戏未定义
- 未捕获的参考错误:stLight未定义(仅在Chrome中)
- 参考错误:Can't find variable: bootbox
- 参考错误:Can't find variable: dataKeys
- Chrome扩展-调用函数在标签上定义(参考错误)
- 不能让鼠标悬停多边形与未捕获的参考错误:谷歌没有定义
- 参考错误:KeyframeEffect没有定义
- 在phonegap中使用javascript (sencha touch)时,Android模拟器中的参考错误