У меня есть веб-приложение, в котором материал на стороне клиента написан с помощью coffeescript и загружен с require.js.
Я бы хотел иметь возможность изолировать и протестировать этот материал с помощью основанного на узле средства запуска тестов, такого какExpresso (хотя другие предложения приветствуются), чтобы я мог интегрировать тестирование на стороне клиента с нашим CI-сервером, который в настоящее время является Team City.
Вот мой каталог:
.
├── coffee
│ ├── models
│ ├── node_modules
│ │ └── expresso
│ ├── spec
│ ├── tests
│ └── views
├── static
│ └── js
│ ├── lib
│ ├── models
│ ├── tests
│ └── views
Этиподключаются с помощью require.js примерно так:
deps = [
"lib/backbone", "models/websocket_collection", "/static/js/lib/date.js"
]
define(deps, (Backbone, ws) ->
# module code and exports here
и загружаются в браузер примерно так:
<script type="text/javascript" charset="utf-8" async="" data-requirecontext="_" data-requiremodule="my_mod" src="/static/js/my_mod.js"></script>
В мире идей сейчас я бы хотел иметь возможностьтестовый модуль, который выглядит следующим образом:
{Model1, Model2} = require "models/some_module"
exports.test_a = ->
assert.equal # etc etc
У меня есть несколько проблем (я действительно не использовал серверную часть узла, кроме случаев, когда я играл с zombie.js)
Каксообщить узлу, где находятся все мои обычные зависимости javascript (в static / js / lib), некоторые из них загружены, но backbone.js был размечен с помощью require.js и определяет такие вещи, как
define(function(require, exports, module) {
(function(){
Как сделатьЯ действительно запускаю тесты?Я пробовал r.js (который, как я понимаю, должен быть мостом между требованием на стороне браузера и требованием узла)
проблема, которую я получаю:
ReferenceError: define is not defined
Я также пытался требовать ("allplugins-require"), который является скриптом, который я загружаю на стороне браузера для сбора всего моего клиентского кода, но, похоже, нарушает требование узла.
- Кто-нибудь делает это?
- Если вы этого не делаете, как вы тестируете свой код (бонусные баллы за интеграцию с CI)?
- Любые альтернативы для управления require.jsзависимости на стороне клиента, которые могли бы играть немного лучше на стороне сервера?
Я был бы очень рад услышать альтернативные подходы, которые используют люди.
Спасибо, Бен