javascript - Jasmine:模拟单例的内部方法

标签 javascript unit-testing jasmine ecmascript-6

我如何模拟对单例方法的调用,例如:

Foo.get().getBar();

使用

模拟 Foo.getBar(); 似乎很简单
jasmine.createSpyObj(Foo, ['get']);
Foo.get.and.returnValue();

但是我一直在研究依赖注入(inject),但无法让它正常工作。 FWIW: getBar 返回一个 promise ,所以我真的想模拟 Foo.get().getBar().then() 我想它一定是这样的

Foo.get.getBar.and.callFake(() => { return deferred.promise; });

最佳答案

你必须这样做:

describe('Foo.get().getBar()',function(){
  it('is happy',function(){
    var Foo = jasmine.createSpyObj('Foo', ['get']);
    console.log(Foo);
    Foo.get.andReturn({
      getBar: function() {
        return 'happy';
      }
    });
    expect(Foo.get().getBar()).toBe('happy');
  });
});

希望有帮助!!!

关于javascript - Jasmine:模拟单例的内部方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38321101/

相关文章:

c# - 使用基类进行集成测试

silverlight - 灯开关中的单元测试

javascript - Karma 测试没有加载 AngularJS 工厂

javascript - 将 Unity WebGL 项目导入 Angular2 组件

javascript - 如何从对象数组创建 TreeView 表 - Javascript

javascript - Parse.com Node.js 通过 id 更新用户

javascript - Google Maps JavaScript API 可在浏览器中使用,但无法在设备上的 Cordova 应用程序中使用

c# - Rhino Mocks DynamicMultiMock - 在附加接口(interface)上设置期望值和返回值

javascript - Jasmine 的 beforeEach 是同步的吗?

jasmine - 有没有办法在 Jasmine Headless webkit 上使用调试?