Durandal和Jasmine:依赖模拟

时间:2014-02-15 02:29:30

标签: unit-testing mocking jasmine durandal

我在尝试模拟一些Durandal依赖项时面临一个问题...例如,我在我的viewmodel(在activate函数上)中有这个:

routerFirstActiveFragment = router.activeInstruction().fragment.toLowerCase().split('/')[0];

我想模拟路由器插件,所以,在我的测试文件中我有这个:

define(['viewmodels/testvm', 'plugins/router'], function (testvm, router) {
    describe('Module test', function () {
        it('a test', function () {
            spyOn(router, 'activeInstruction').andReturn('/get/33');
            testvm.activate();
        });
    });
});

问题在于,当我这样做时,我在运行测试时会收到此消息

TypeError: Cannot read property 'toLowerCase' of undefined

那么,我做错了什么?

提前致谢!

1 个答案:

答案 0 :(得分:0)

嗯,它的工作原理如下:

spyOn(router, 'activeInstruction').andCallFake(function () {
    return {
        fragment: "/get/33"
    };
});