code: def test_feature_should_work_with_cache(self):
      # Given
      def fn(tokens, token_index):
          value = tokens[token_index].value
          return "%s_%s" % (value, len(value))
  
      mocked_fn = MagicMock(side_effect=fn)
  
      cache = [
          {TOKEN_NAME: token}
          for token in tokenize("hello beautiful world", LANGUAGE_EN)
      ]
      feature = Feature("test_feature", mocked_fn, offset=0)
      feature.compute(2, cache)
      feature1 = Feature("test_feature", mocked_fn, offset=1)
      feature2 = Feature("test_feature", mocked_fn, offset=2)
  
      # When
      res1 = feature1.compute(1, cache)
      res1_bis = feature1.compute(0, cache)
      res2 = feature2.compute(0, cache)
  
      # Then
      self.assertEqual(res1, "world_5")
      self.assertEqual(res1_bis, "beautiful_9")
      self.assertEqual(res2, "world_5")
      self.assertEqual(mocked_fn.call_count, 2)
  
imports: from __future__ import unicode_literals
  import io
  from mock import MagicMock
  from snips_nlu.constants import LANGUAGE, LANGUAGE_EN, SNIPS_DATETIME, SNIPS_NUMBER, STEMS, GAZETTEERS, WORD_CLUSTERS
  from snips_nlu.dataset import Dataset
  from snips_nlu.entity_parser import BuiltinEntityParser, CustomEntityParser
  from snips_nlu.entity_parser.custom_entity_parser_usage import CustomEntityParserUsage
  from snips_nlu.exceptions import NotRegisteredError
  from snips_nlu.preprocessing import tokenize
  from snips_nlu.slot_filler.crf_utils import BEGINNING_PREFIX, INSIDE_PREFIX, LAST_PREFIX, TaggingScheme, UNIT_PREFIX
  from snips_nlu.slot_filler.feature import Feature, TOKEN_NAME
  from snips_nlu.slot_filler.feature_factory import BuiltinEntityMatchFactory, CustomEntityMatchFactory, IsDigitFactory, IsFirstFactory, IsLastFactory, LengthFactory, NgramFactory, PrefixFactory, ShapeNgramFactory, SingleFeatureFactory, SuffixFactory, WordClusterFactory, CRFFeatureFactory
  from snips_nlu.tests.utils import SnipsTest
label_desc: Use image node_id 3 for calling the TestCRFFeatures obj's underlying member method code with example usage: obj.test_feature_should_work_with_cache() and returns: unknown