javascript - 单元测试 Typescript 装饰器

标签 javascript unit-testing typescript

我有一个基于 typescript 构建的应用程序,带有用于一些方便的属性分配的装饰器,我想知道如何为它们编写单元测试。

 export function APIUrl() {
        return function (target: any, key: string) {
             let _value = target[key];

          function getter() {
            return _value;
          }

          function setter(newValue) {
            _value = getApiURL();
          }

          if (delete target[key]) {
            Object.defineProperty(target, key, {
                get: getter,
                set: setter
            });
          }
        };
    }

在我的规范类(class)中,

 it("should return url string", ()=> {
   @APIUrl();
   let baseURL:string;

   expect(baseURL typeOf string).toBe(true)
 })

最佳答案

因为装饰器只是函数,所以我建议像测试任何其他函数一样测试它们。并且只有在您确实需要时,才添加一个测试来展示如何将装饰器与类/成员/...一起使用。

这是一个这样的测试示例:

import test from 'ava';
import { APIUrl } from './path';

const decorate = new APIUrl();

test.before(t => {
  let obj = { someProp: 'foo' };
  decorate(obj, 'someProp');
  t.context.foo = obj;
});

test('should return original value', t => {
  t.is(t.context.foo.someProp, 'foo');
});

关于javascript - 单元测试 Typescript 装饰器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39112921/

相关文章:

javascript - 从子类的实例中获取类的属性

unit-testing - 如何对 netty 处理程序进行单元测试

java - 为什么此测试 junit 测试返回 400?

typescript - 如何在页面刷新时正确补充 NextJS 中的 Redux 状态?

javascript - Reducer 函数无法在 reducer 对象中创建键值对

javascript - react-redux-i18n 切换语言

angular - 如何在 Angular Firestore 中将日期保存为时间戳?

TypeScript 需要类型检查

javascript - Web组件的自定义方法

c# - 单元测试 FileSystemWatcher.Error 事件