【发布时间】:2013-11-01 13:04:12
【问题描述】:
我认为这只是一个 JavaScript 范围问题。
我正在尝试将一些 Jasmine 测试添加到 Backbone 应用程序,但我不知道如何从我的 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开始运行一切正常:
$(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,但这也无济于事。
【问题讨论】:
-
能否请您使用 Setup and Tear Down 进行测试pivotal.github.io/jasmine/#section-Setup_and_Teardown
-
你需要把这个
Todo("Get the milk", "Tuesday");改成Todo({"task":"Get the milk","date":"Tuesday");
标签: javascript backbone.js jasmine