2017-06-23 96 views
-1

我想用興農存根使用一個回調函數解析一個承諾的功能:Sinon.JS存根解決了一個承諾

const callback = (err, data) => { 
     if (err) { 
     reject(err); 
     } else { 
     resolve(data); 
     } 
    }); 

stub.me({}, callback); 

我想:

var stub = { 
    me: sinon.stub().yieldsTo("resolve", "my_data"), 
}; 

,但我一直獲得摩卡超時。

該代碼沒有爲回調定義const。這一切都在stub.me函數調用中。我只是這樣寫的,所以讀起來很清楚。

它也包裹在一個new Promise((resolve,reject) => {});塊。

+0

這是沒有意義的。存根是功能的替代品。該功能(及其替代品)必須從某處使用。如果這是一個模塊(比如說''/ my-module.js'),那麼你需要提供更多的代碼。你試圖測試什麼? – oligofren

+1

AWS DynamoDB。我有一個將dynamodb-doc變成承諾的功能。我使用這個AWS mocks修復了它。我之前嘗試過,但錯過了每個單獨功能範圍內需要使用發動機的部分。在我做了更多的工作後,我會盡快發佈答案。 – steve76

+0

我認爲你的問題不清楚對別人沒用。目前還不清楚是什麼使得'新的Promise()'和'stub'和'stub.me()'是如何定義的。 –

回答

-2

這是由於範圍錯誤。根據aws-sdk-mock的碼頭,AWS服務需要在函數中初始化。

不起作用:

var AWS  = require('aws-sdk'); 
var sns  = AWS.SNS(); 
var dynamoDb = AWS.DynamoDB(); 

exports.handler = function(event, context) { 
    // do something with the services e.g. sns.publish 
} 

作品:

var AWS = require('aws-sdk'); 

exports.handler = function(event, context) { 
    var sns  = AWS.SNS(); 
    var dynamoDb = AWS.DynamoDB(); 
    // do something with the services e.g. sns.publish 
} 
+1

沒有'stub','me'或甚至'sinon'的痕跡。雖然這個答案可能已經解決了你的問題,但它不會幫助其他人有類似的問題「樁函數」,因爲你的問題沒有顯示整個圖片,你的答案根本不涉及樁。 –

+0

所以AWS SDK的發電機功能使用回調。我用它們來創建一個使用promise的新函數。我想在本地測試代碼,所以我嘗試了aws-mock npm,這不起作用。我按照他們的指示來定義我的功能中的服務,並且它沒有工作,所以我轉向了sinon。 Sinon沒有工作,所以我發佈了這個問題。我解釋得越多,它就越複雜,所以我儘量保持最低限度。 – steve76