使用SinonJS在fetch / then / catch中使用stubing类方法

时间:2016-11-14 14:09:59

标签: typescript fetch sinon

我可能会错过Sinon创建其存根的方式,但这里是我试图测试的一些代码(它是TypeScript,但是我'我相信它在ES6 JS中是一样的:)

public requestNewUserProfile(authenticationToken: string, callbackUrl?: string): Function {
    return (dispatch) => {
        dispatch(this.requestNewUserProfileInit(authenticationToken))

        return fetch(this.buildUserProfileRequest(authenticationToken))
            .then(response => {
                // some error handling
                return response.json()
            })
            .then(user => {
                dispatch(this.requestNewUserProfileSuccess(user))
            })
            .catch(error => {
                dispatch(this.requestNewUserProfileFailure(error.message))
            })
    }
}

由于我已经单独测试了这里调用的每个方法,所以我更愿意,如果我可以简单地将它们存根并断言它们已被调用。否则,我需要再次模拟数据,这反过来会导致比我更喜欢的更脆弱的测试。

我在测试中尝试了sandbox.stub(Class.prototype, 'requestNewUserProfileSuccess')sandbox.stub(classInstance, 'requestNewUserProfileSuccess')。存根适用于具有dispatch参数的匿名函数内部的方法,但只要在fetch()调用中调用它,模拟就会被忽略,实际的类将被忽略。使用了方法,导致错误,因为fetch调用的结果缺少参数requestNewUserProfileSuccess()所期望的。

我努力实现的目标是什么?如果是这样,我该如何设置呢?

0 个答案:

没有答案