ember.js - 你如何测试你的 emberjs 路由?

标签 ember.js ember-old-router

在几个月没有看 emberjs 之后,我现在试图回到它,因此我正在尝试新的路由器。我想测试我的路线。

有没有人尝试用 emberjs 编写一些路由测试?

让我们假设以下非常基本的路由器:

App.Router = Ember.Router.extend({
  root: Ember.Route.extend({
    index: Ember.Route.extend({
      route: '/',
      connectOutlets: function(router, context) {
        router.get('applicationController').connectOutlet({name: 'home'});
      }
    })
  })
})

你如何测试加载 root.index路由正确加载 HomeView ?

最佳答案

这是完整的测试,使用 Jasmine & Sinon :

代码:

describe("Given the Router", function(){

    var router = null;

    beforeEach(function(){
        router = Router.create();
    });

    afterEach(function(){
        router = null;
    });

    it("Should be defined", function(){
        expect(router).toBeDefined();
    });

    it("Should have an root route", function(){
        expect(router.get("root")).toBeDefined();
    });

    describe("its root route", function(){
        var root = null;
        beforeEach(function(){
            root = router.get("root").create();
        });

        afterEach(function(){
            root = null;
        });

        it("should have an index route", function(){
            expect(root.get("index")).toBeDefined();
        });

        describe("its index route", function(){
            var indexRoute = null;
            beforeEach(function(){
                indexRoute = root.get("index").create();
            });

            it ("should have route of /", function(){
                expect(indexRoute.get("route")).toEqual("/");
            });

            it ("should connect the outlets to home", function(){

                var fakeRouter = Em.Object.create({applicationController: {connectOutlet: function(){} } });

                var connectOutletSpy = sinon.spy(fakeRouter.applicationController, "connectOutlet");

                var methodCall = connectOutletSpy.withArgs({name:"home"});

                indexRoute.connectOutlets(fakeRouter);

                expect(methodCall.calledOnce).toBeTruthy();
            });
        });
    });
});

希望能帮助到你。

关于ember.js - 你如何测试你的 emberjs 路由?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11432896/

相关文章:

javascript - JQuery HTML5 表单

ember.js - 处理路线时出错,工厂未定义

javascript - 为什么以及何时我们应该在 ember.js 中使用 argument.length

javascript - 如何访问路由内的 Emberjs 模型数据

javascript - Http 请求 - 外部 url 请求 ember js

javascript - EmberJS : How to transition to a router from a controller's action

ember.js - 在 Ember 路由器中更改状态时断开 socket /删除 View ?

javascript - Ember.js 路由器应用程序架构 - 如何在松散耦合的组件之间正确通信

routes - Ember.js路由: how do you set a default route to render immediately?

Ember.js 路由器操作到 Controller