2016-06-10 98 views
0

我写了一个基于承诺的API。单元测试是最好的方法?茉莉花是一个好方法吗?使用Jasmine的api单元测试承诺

另外还可以给我一个例子,如何可以单元测试承诺?一个单位是否应该测试“当时”以及“捕获”部分?

回答

1

茉莉花绝对是做基于承诺的单元测试的强有力的选择。在不太了解API的情况下,下面是几个例子,说明如何在等待承诺解决或失败时进行单元测试。

下面示例中的关键字是传递给每个单元测试(it块)的done变量。这让茉莉花知道测试是异步的,茉莉花会在从单元测试开始之前调用done函数。

希望这会有所帮助!

describe('Unit tests', function() { 
    it('promise should succeed', function (done) { 
    myApi.function().then(function(data) { 
     //assert data came back correctly 
     done(); 
    }).catch(function() { 
     fail(); 
    }); 
    }); 

    it('promise should throw error', function() { 
    myApi.function().then(function(data) { 
     fail(); 
    }).catch(function(error) { 
     //assert error has been thrown correctly 
     done(); 
    }); 
    }); 
}); 
0

茉莉花是单元测试框架,它提供了测试运行,总部设在断言方法和嘲笑/间谍。这是单元测试JavaScript代码的一种流行方式。它不比任何其他可用的方法/框架更好,应该根据其他选项进行评估,以确定它是否适合您的项目。

没有示例代码,单元测试承诺应该与单元测试任何其他代码没有区别。对IO依赖关系进行存根并评估所有关键逻辑路径。如果你的承诺明确抛出的可能是一个有价值的方法来断言。与then相同,调用then应该允许您测试您的解决逻辑。

必须通过thencatch与您的代码交互可能不是行使您的承诺逻辑的最有效方式。如果存在大量的逻辑,则将其封装在承诺之外的函数中是很好的,以便于进行单元测试。然后,通过解决承诺,可轻易测试该核心逻辑的接口。