javascript - 使用 Jasmine 测试 TypeScript 类

标签 javascript unit-testing typescript jasmine

我想问你如何测试接受另一个类的构造函数实例的类。例如我想测试方法'hasChildRoutes()':

    class Route implements ng.route.IRoute {
    public url: string;
    public config: RouteConfig;

    constructor(url: string, config: RouteConfig) {
                this.url = url;
                this.config = config;
            }

    public hasChildRoutes(): boolean {
                return this.config.childRoutes.length > 0;
            }
}

我为此编写了错误的单元测试(我创建了另一个类的新实例,这在我看来很糟糕):

 beforeEach(() => {
        routeSetting = new RouteSetting(1, '');
        routeConfig = new RouteConfig('', '', routeSetting, [], '');
    });


    describe('Methods test', () => {
        var childRoute: Route;

        beforeEach(() => {
            route = new Route('', routeConfig);
        });

        it('sould return false when Route has no child routes', () => {
            expect(route.hasChildRoutes()).toBeFalsy();
        });

        it('sould return true when Route has child routes', () => {
            routeConfig = new RouteConfig('', '', routeSetting, [route], '');
            route = new Route('', routeConfig);

            expect(route.hasChildRoutes()).toBeTruthy();
        });
    });

最佳答案

在 arrange/act/assert 中提供依赖实例作为 arrange 的一部分是完全有效的。

话虽如此,如果您想单独测试 a(这取决于 b),您可以提供一个模拟 b,例如使用 sinonjs:http://sinonjs.org/

关于javascript - 使用 Jasmine 测试 TypeScript 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20371709/

相关文章:

javascript - HTML > 根据窗口和图像大小旋转和缩放图像

c# - 我可以使用内存中的 Entity Framework 6.2.0 或者是否有任何方法可以做到这一点

java - JUnit 测试用例 : Argument(s) are different! 需要:

typescript - typescript .d.ts 文件编译错误可以安全忽略吗?

javascript - 在对象中存储接口(interface)

html - ngModel 不适用于 ngFor 内的输入类型复选框

javascript window.open 无限加载

javascript - 向 jQuery Counter 添加千位分隔符

javascript - 删除最后一个引用后,何时释放 Javascript 对象声明的内存?

javascript - 具有异步功能的有状态 React 组件未通过 Jest 测试