1

スプレッドシート(​​4列)を読み取り、フィードを取得し、特定の列(2列)をCSVファイルに書き込むmoxテストを作成しようとしています。私はリストフィードを取得するという最初のステップを乗り越えようとしています。私のコードは次のとおりです。

class SpreadsheetReader(mox.MoxTestBase):

  def setUp(self):
    mox.MoxTestBase.setUp(self)
    self.mock_gclient = self.mox.CreateMock(
                                            gdata.spreadsheet.service.SpreadsheetsService)
    self.mock_spreadsheet_key = 'fake_spreadsheet_key'
    self.mock_worksheet_id = 'default'
    self.test_data = [{'str_col':'col1', 'str_col':'col2', 'str_col':'col13'}]


  def testGetFeed(self):

    self.mock_gclient.GetListFeed(self.mock_spreadsheet_key,
                                  self.mock_worksheet_id).AndReturn(self.test_data)

    self.mox.ReplayAll()
    self.mox.Verify()


  def tearDown(self):
    mox.MoxTestBase.tearDown(self)

これを実行すると、次のエラーが発生します。

ExpectedMethodCallsError: Verify: Expected methods never called:
  0.  SpreadsheetsService.GetListFeed('fake_spreadsheet_key', 'default') -> [{'str_col': 'col13'}]

このエラーを修正する方法はありますか?

4

2 に答える 2

4

GetListFeed を呼び出す関数を実際にトリガーする必要があります。を呼び出す時点までは、self.mox.ReplayAll()mox がリプレイ モードになったときに表示されるはずの内容を「記録」しているだけです。mox をリプレイ モードにした後、 を呼び出す関数を実際に呼び出す必要がありますGetListFeedtestGetFeedあなたの場合、それはその親機能が何であるかのように見えます。

また、クラス定義でサブクラス化mox.MoxTestBase()しているため、最後に呼び出す必要はありません— docsself.mox.Verify()に従って、

テスト ケースを mox.MoxTestBase のサブクラスにすることができます。これにより、self.mox にモック オブジェクト ファクトリが自動的に作成され、すべてのモック オブジェクトが自動的に検証され、各テストの最後にスタブが設定解除されます。

于 2012-10-05T23:53:55.240 に答える
1
self.mox_gclient = self.mox.CreateMock(gdata.spreadsheet.service.SpreadsheetsService)
self.mox_gclient.StubOutWithMock(ActualClass,"method_to_be_tested").AndReturn(retValue)
self.mox_gclient.VerifyAll()
于 2013-05-08T16:17:29.103 に答える