2017-08-26 52 views
1

我想创建自己的断言类。我尝试安装mocha和chai,但是从这些模块深处获得了很多很多错误,所以目前我宁愿尝试一些自建的东西,如果不是至少要学习更多的TypeScript。构建自己的断言类

我找到了一个好的模板(https://gist.github.com/brunolm/6031927),并且IsFalse,IsTrue,AreEqual的实现工作得很好。我用一个IsNullOrUndefined扩展它以满足我的需求,迄今为止都是很好的。

我也想使用IsInstanceOf测试。它是这样实现的:

public static IsInstanceOfType(expectedType: Function, actual: any): void { 
    if (!(actual instanceof expectedType)) { 
     // some more code to construct a message, and throw 
    } 
} 

虽然我无法获得该代码的工作。我不知道如何/作为第一个参数传递什么。我尝试这样

Assert.IsInstanceOfType((): List<string> => { return undefined; }, list); 

与列表<>是我自己的泛型集合类,以及列表是它(或不...这是找出)的实例。

上面的代码编译,但失败,即使它不应该断言失败。我发现“传递函数返回你期望的类型”很奇怪,如果可能的话,会更喜欢更好的东西。 如果这是要走的路,那么我错误地使用它 - 你会如何使用它?

我问笔者,他建议我应该这样调用

Assert.IsInstanceOfType(List<string>, list); 

但是,这并不与编译器,这不可能是正确的,或者是办理什么手续?我无法实现它 - 这是写出来的类型,不是函数?!?

有什么建议吗?

+0

我在此处显示的功能参数顺序与原始链接类相比进行了切换。可悲的是,这还不是解决问题的办法。如何传递参数的问题,而不是它们的放置顺序... – Ralf

回答

0
​​

然后

const Foo = function() {}; 
Assert.IsInstanceOfType(Foo, new Foo()); // true 

我希望这将指引你走向解决方案。

给我们你的代码列表对象,如果你需要更多的帮助。