单元测试 Typescript 装饰器

2024-04-30

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

 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
            });
          }
        };
    }

在我的规范课上,

 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');
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

单元测试 Typescript 装饰器 的相关文章

随机推荐

  • 无法序列化 System.Collections.Generic.Dictionary`2 类型的成员 ...,因为它实现了 IDictionary

    我试图通过 WCF 传递一个带有 Dictionary 属性的类 对于一种方法失败 但对于另一种方法有效 当类在 a 内返回时List 有用 但是当类在 a 中返回时DataTable 客户端只是说连接已断开并且没有显示错误 这是引起问题的
  • SOLR - 过滤器查询中的正则表达式

    我想在 fq 中实现 Regex 但以前从未实现过 我的属性中有以下值 字段类型为 小写 Prop company1 city1 state1 country1 高级分析化学家 芝加哥 我想根据正则表达式过滤结果 正则表达式应该与上面的内容
  • Bash 中的条件管道

    我有一个过滤器 我想选择性地启用它 我想知道如何在 bash 中以干净的方式执行此操作 FILTER sort also can be empty ls FILTER cat 此代码不起作用 因为它会调用ls with and sort作为
  • 使用 \Z 与 \z 作为扫描仪分隔符的行为

    编辑 我找到了答案 但由于新用户的限制 我无法回答这个问题 不管怎样 这是 Java 中的一个已知错误 http bugs java com bugdatabase view bug do bug id 8028387 http bugs
  • ASP.NET MVC Razor 视图中的断点不会被命中。该文档尚未加载任何符号

    在 IIS Express 中进行调试时 我无法在 Visual Studio 2013 中的 Razor 视图中设置断点 这是视图和无法到达的断点 查看模块 我发现最新的 PDB 文件已加载 还有文件夹 C Windows Microso
  • Google Play 服务中的 NodeAPI 如何工作?

    我试图通过 getNodes 方法找到节点列表NodeAPI https developers google com android reference com google android gms wearable NodeApi在 Go
  • JavaFX 8 DatePicker 风格

    如何更改JavaFX 8中DatePicker中日历的样式 我查看了 modena 文件中的所有默认样式 但没有找到 DatePicker 的类 有人知道该怎么做吗 例如 将标题颜色更改为蓝色 默认样式如下 您可以找到以下的 cssDate
  • 如何从 python 的输出中删除大括号?

    我是 Python 新手 我最近 1 周前开始学习 但我被困在这里 任何帮助将不胜感激 from tkinter import import tkinter as tk import psycopg2 root Tk def get inf
  • 无法推送到远程 GIT 存储库 - “[...] 似乎不是 git 存储库”

    我已经在我的服务器上使用适当文件夹中的以下内容设置了 GIT 存储库 我的子域的根目录 git mydomain com mkdir foo git cd foo git git init bare shared 这将使存储库可通过 URL
  • Linux 内核:Spinlock SMP:为​​什么 spin_lock_irq SMP 版本中有 preempt_disable()?

    Linux内核中的原始代码是 static inline void raw spin lock irq raw spinlock t lock local irq disable preempt disable spin acquire l
  • 在 Subversion 中合并分支时预防冲突

    我最近在 Subversion 中观察到一个非常奇怪的合并冲突 我使用乌龟SVN作为客户端 干线和分行详细信息请参见以下信息 树干 两个用户正在研究这个问题 QA 是主干合并将发生的分支 为了简单起见 trunk ClassLibrary1
  • Spring Security 3.1 - 当会话超时时自动重定向到登录页面

    我有一个基于 Spring 的 Web 应用程序 并且正在实现 Spring Security 3 1 我需要的是当配置的会话超时发生时能够自动重定向到登录页面 我正在实现包含大量 jQuery 功能的网页 因此我需要能够自动重定向 目前发
  • Angular 指令和 Jquery slipToggle 函数实现

    使用 Angular 和 jquery 我实现了 slipToggle 函数 为了仅将此函数应用于一个特定的 HTML 元素 我在 ng click 函数中使用一个参数 我的代码工作正常 但是 我想知道是否存在另一种更好的方法来实现角度中的
  • 使用默认值递归填写对象属性

    我想用一些虚拟数据填充对象的属性 这是我的代码 但它总是返回 null private static object InsertDummyValues object obj if obj null var properties obj Ge
  • 使用 django-cas-ng 在管理站点上进行身份验证

    我在用着Django Cas NG https github com mingchen django cas ng用于验证用户身份的框架 主要问题是管理页面仍然使用默认的登录视图 到目前为止使用的方法 1 使用环境变量 来自文档 CAS A
  • 如何修复此错误:[WinError 267] 目录名称无效:

    我有一个 python 脚本 它创建一个 GUI 应用程序 在用户选择路径后显示现有文件的列表 系统显示在QlistWidget文件名及其父文件夹 我想从列表中获取所选文件的完整路径 例子 C Users test Desktop test
  • R闪亮:使用fileInput重新加载数据

    有没有办法重新加载使用 fileInput 加载的输入文件 我想允许用户通过简单修改和重新加载 csv 文件来更新他的输入 似乎重新加载文件并没有更新它 一种有用的解决方法是使用不同的文件名保存修改后的数据 我已经尝试过使用 actionB
  • 其中哪些在 Python 中是不可变的?

    我试图弄清楚以下内容在 Sage 中是否是不可变的 它是基于 Python 构建的 所以我相信如果它在 python 中是不可变的 我相信在大多数情况下它在 Sage 中也是不可变的 下面是对象 e f g i class e pass f
  • Observable.of 转异步

    我即将模拟一个封装在 observable 中的 http 调用 我最初的想法是简单地使用Observable of如同Promise resolve 但它似乎没有按我的预期工作 Rx Observable of of1 subscribe
  • 单元测试 Typescript 装饰器

    我有一个基于带有装饰器的打字稿构建的应用程序 用于一些方便的属性分配 并想知道如何为它们编写单元测试 export function APIUrl return function target any key string let valu