class Todo extends Backbone.Mod-6ren">
gpt4 book ai didi

coffeescript - Require.JS 和 JS 测试驱动程序 : Unexpected token <

转载 作者:行者123 更新时间:2023-12-04 18:19:39 27 4
gpt4 key购买 nike

我正在尝试测试通过 RequireJS 加载的简单主干模型:

define ["backbone"], (Backbone)->

class Todo extends Backbone.Model
defaults:
title: ''
priority: 0
done: false

validate: (attrs) ->
errs = {}
hasErrors = false

if (attrs.title is "")
hasErrors = true
errs.title = "Please specify a todo"

if hasErrors
return errs

toggleDone: ->
@save("done", !@get("done"))

return Todo

我的测试看起来像:
requirejs.config 
baseUrl: "js/"
paths:
jquery: "https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min"
jqueryui: "https://ajax.googleapis.com/ajax/libs/jqueryui/1/jquery-ui.min"
json2: "http://ajax.cdnjs.com/ajax/libs/json2/20110223/json2"
underscore: "http://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.3.3/underscore-min"
backbone: "http://cdnjs.cloudflare.com/ajax/libs/backbone.js/0.9.2/backbone-min"
backboneLocalStorage: "https://raw.github.com/jeromegn/Backbone.localStorage/master/backbone.localStorage-min"
shim:
"underscore":
exports: "_"
"backbone":
deps: ["jquery", "underscore", "json2"]
exports: "Backbone"
"jqueryui":
deps: ["jquery"]
"backboneLocalStorage":
deps: ["backbone"]
exports: "Backbone.LocalStorage"

require ["models/todo"], (Todo) ->

console.log Todo

TodoTests = TestCase("TodoTests")

TodoTests::testCreateTodo = ->
todo = new Todo({ title: "Hello" })
assertEquals "Hello", todo.get("title")
assertEquals 0, todo.get("priority")
assertEquals false, todo.get("done")

JS 测试驱动程序配置:
server: http://localhost:3001

load:
- ../public/js/libs/require.js
- ../public/js/tests.js

serve:
- ../public/js/models/*
- ../public/js/collections/*
- ../public/js/views/*

从 Chrome 控制台上的 JS 测试驱动程序监听页面看到的问题:

Uncaught SyntaxError: Unexpected token <



从 Chrome 中查看 Todo.js,
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><title>Console Runner</title><script type="text/javascript">var start = new Date().getTime();</script>
Uncaught SyntaxError: Unexpected token <
<script src="/static/lib/json2.js" type="text/javascript"></script><script src="/static/lib/json_sans_eval.js" type="text/javascript"></script><script src="/static/jstestdrivernamespace.js" type="text/javascript"></script><script src="/static/lib/jquery-min.js" type="text/javascript"></script><script src="/static/runner.js" type="text/javascript"></script><script type="text/javascript">jstestdriver.runConfig = {'debug':false};</script>
<script type="text/javascript">jstestdriver.console = new jstestdriver.Console();

注意它是一个 HTML 页面,而不是我的实际 JS。还有 console.log(Todo)返回 undefined因为返回的是 HTML 页面而不是 JS。我配置错了吗?

最佳答案

我为此苦苦挣扎了好几天,并无休止地用谷歌搜索,直到我终于发现 JsTestDriver 在做什么。在您的 requirejs.config ,为了让您的测试正常运行,您的 baseUrl需要是:

baseUrl: /test/path/to/your/stuff

原因是当 JsTestDriver 创建它的服务器时,它会在 /test/ 前面添加到所有目录。如果 baseUrl设置不正确,它开始尝试向本地发回我认为的对窗口的引用。

我看到您可能遇到的唯一另一个问题是使用 require 语句作为第一行运行测试。我有 Jasmine 并将我的 require() 放在我的测试顶部导致它们永远不会运行,所以我必须在我的 beforeEach 中为我的测试执行它并在它们运行之前获取对象。

尽管我看到无数其他人声称 Jasmine 中的 require 语句有效,但我可能做错了什么,所以我的追捕仍在继续。

关于coffeescript - Require.JS 和 JS 测试驱动程序 : Unexpected token <,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10929435/

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