我想创建自己的小断言类。我尝试安装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);
与List&lt;&gt;是我自己的通用集合类,列表是它的一个实例(或者不是......那就是找出来的。)
上面的代码编译,但断言失败,即使它不应该。我发现“传递一个返回你期望的类型的函数”很奇怪,如果可能的话,我会更喜欢更好的东西。 如果这是要走的路,那我就错了 - 你会怎么用呢?
我问作者,他建议我应该这样打电话
Assert.IsInstanceOfType(List<string>, list);
但是编译器没有通过,这可能不对,或者是吗?我无法让它工作 - 这是写出的类型,而不是函数?!?
有什么建议吗?
答案 0 :(得分:0)
public static IsInstanceOfType(type: Function, instance: any): void {
if (!(instance instanceof type)) {
// some more code to construct a message, and throw
}
}
然后
const Foo = function() {};
Assert.IsInstanceOfType(Foo, new Foo()); // true
我希望这会引导你走向解决方案。
如果您需要更多帮助,请提供 List 对象的代码。