【问题标题】:Jest : testing simple class with Store dependencyJest : 使用 Store 依赖测试简单类
【发布时间】:2015-07-11 17:50:46
【问题描述】:

我很难理解为什么我的模拟方法没有返回我使用 mockReturnValue 指定的值。我正在测试一种简单的方法,该方法检查商店中的帮助程序,以查看用户在继续之前是否经过身份验证。请参阅下面的connectIfAuth

'use strict';

var AuthStore = require('../stores/AuthStore');

console.log('top ' + AuthStore.isAuthenticated());

var TestClass = {
  connect() {
    //...use a mock
  },
  connectIfAuth() {
    console.log('in connect if: ' + AuthStore.isAuthenticated());
    if (AuthStore.isAuthenticated()) { 
      this.connect();
    }
  }
};

module.exports = TestClass;

在我的测试中,我想让 store 中的模拟方法返回 true/false,并测试 connect() 方法是否被调用/未调用,但该方法在我正在测试的方法中返回 undefined

'use strict';

jest.dontMock('../TestClass.js');

var AuthStore = require('../../stores/AuthStore');

describe('TestClass', function() {
  var TestClass;
  var connectMock;

  beforeEach(function() {
    //the store should return true
    AuthStore.isAuthenticated = jest.genMockFunction().mockReturnValue(true);
    //do I have to require this after I mock out the method(s) in AuthStore?
    TestClass = require('../TestClass');
    connectMock = jest.genMockFunction();
    TestClass.connect = connectMock;
  });

  it('should return the mocked value', function(){
    TestClass.connectIfAuth();
    expect(connectMock.mock.calls.length).toBe(1); //is 0
  });
});

我的测试输出是:

  • 失败 src/scripts/api/tests/TestClass-tests.js (0.121s)
  • 顶部未定义
  • 在连接中如果:未定义
  • ● TestClass › 它应该返回模拟值
  • 预期:0 未来:1
  • 在规格。 (/Users/blabla/projects/my-client/src/scripts/api/tests/TestClass-tests.js:20:43)
  • 在 Timer.listOnTimeout [as ontimeout] (timers.js:112:15)

【问题讨论】:

    标签: reactjs jestjs


    【解决方案1】:

    如果有人遇到同样的问题 - 我通过将所有需求语句放在 describe/it 块之外来解决这个问题。与this question 类似,但我也最终在文件顶部找到了require-ing 我正在测试的模块。我假设我必须密切管理 beforeEachafterEach 方法来清理我在测试中使用的模拟。

    【讨论】:

      猜你喜欢
      • 2021-10-16
      • 2020-01-11
      • 2021-04-20
      • 2021-08-08
      • 2021-10-21
      • 2015-07-19
      • 2018-06-03
      • 2021-02-01
      • 1970-01-01
      相关资源
      最近更新 更多