#src/Acme/WebBundle/Controller/TestController.php <?php namespace Acme\WebBundle\Controller; use Symfony\Bundle\FrameworkBundle\Controller\Controller; class TestController extends Controller { public function testAction() { return $this->render('AcmeWebBundle:Test:layout.html.twig'); } } ?>
#src/Acme/WebBundle/Resources/views/Test/layout.html.twig <!DOCTYPE html> <html> <head> <title>{% block sylius_title %}QUnit tests{% endblock %}</title> <meta charset="UTF-8"> <!-- QUnit --> <link rel="stylesheet" href="http://code.jquery.com/qunit/qunit-1.15.0.css"/> </head> <body> <div id="qunit"></div> <div id="qunit-fixture"></div> <!-- RequireJS test.js --> {% javascripts '@AcmeWebBundle/Resources/assets/js/test.js' filter='requirejs' %} {{ require_js_initialize({ 'main' : asset_url }) }} {% endjavascripts %} </body> </html>
#src/Acme/WebBundle/Resources/config/routing.yml _tests: pattern: '/_tests' defaults: { _controller: AcmeWebBundle:Test:test }
#src/Acme/WebBundle/Resources/assets/js/test.js (function () { "use strict"; // Qunit, , // «Called start() while already started (QUnit.config.semaphore was 0 already)» QUnit.config.autoload = false; QUnit.config.autostart = false; //require the unit tests. require( ["QUnit", "tests/user/user", "tests/user/user2"], function (QUnit, user) { // user.run(); user2.run(); // QUnit. QUnit.load(); QUnit.start(); } ); }());
# app/config/config.yml hearsay_require_js: require_js_src: //cdnjs.cloudflare.com/ajax/libs/require.js/2.1.14/require.min.js initialize_template: HearsayRequireJSBundle::initialize.html.twig # , , «» «web». base_url: js # base_dir: %kernel.root_dir%/../src/Acme/DemoBundle/Resources/assets/js # Required # requirejs.config() # «external: true» paths: main: location: @AcmeDemoBundle/Resources/assets/js/main jquery: location: //ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min external: true underscore: location: //cdnjs.cloudflare.com/ajax/libs/underscore.js/1.6.0/underscore-min external: true backbone: location: //cdnjs.cloudflare.com/ajax/libs/backbone.js/1.1.2/backbone-min external: true text: location: @AcmeDemoBundle/Resources/assets/js/vendor/text bootstrap: location: //maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min external: true test: location: @AcmeWebBundle/Resources/assets/js/test QUnit: location: %kernel.root_dir%/../node_modules/qunitjs/qunit/qunit # shim shim: bootstrap: deps: [jquery] QUnit: deps: [jquery] exports: "QUnit" test: deps: [QUnit] exports: "test"
npm install qunit
#src/Acme/WebBundle/Resources/assets/js/tests/user/user.js define( ["QUnit", "bundles/user/models/user"], function (QUnit, User) { "use strict"; var run = function () { QUnit.module(" Backbone "); QUnit.test(" ", function () { // QUnit.expect(3); var user = new User(); // QUnit.equal(user.get("name"), "User name", " 'User name'"); QUnit.equal(user.get("email"), "example@example.com", "s Email 'example@example.com'"); QUnit.equal(user.get("telephone"), "111-11-11", "s '111-11-11'"); }); return {run: run} } ); #src/Acme/WebBundle/Resources/assets/js/tests/user/user2.js define( ["QUnit", "bundles/user/models/user"], function (QUnit, User) { "use strict"; var run = function () { QUnit.module("2 Backbone "); QUnit.test(" ", function () { QUnit.expect(3); // User var user = new User({ name: "Vasily Pupkin", email: "vasily@pupkin.com", telephone: "333-22-11" }); // QUnit.equal(user.get("name"), "Vasily Pupkin", "Name Correct!"); QUnit.equal(user.get("email"), "vasily@pupkin.com", "Email Correct!"); QUnit.equal(user.get("telephone"), "333-22-11", "Telephone Correct!"); }); }; return {run: run} } );
#src/Acme/WebBundle/Resources/assets/js/bundles/user/models/user.js define(["backbone"], function (Backbone) { "use strict"; return Backbone.Model.extend({ defaults: { name: "User name", email: "example@example.com", telephone: "111-11-11" } }); });
Source: https://habr.com/ru/post/259901/
All Articles