Jasmine 模拟在目标类中实例化的类

Jasmine 模拟在目标类中实例化的类,jasmine,karma-jasmine,Jasmine,Karma Jasmine,我试图为类的函数编写一个Jasmine测试,该类实例化并观察另一个类中的对象。因为我想让这个测试包含在第一个类中,并模拟第二个类的不同场景,所以我想模拟第二个类。一些伪代码可能会有所帮助 export class Foo { startProcessing() { const bar = new Bar(); const sub = bar.tickTock.subscribe( state => {

我试图为类的函数编写一个Jasmine测试,该类实例化并观察另一个类中的对象。因为我想让这个测试包含在第一个类中,并模拟第二个类的不同场景,所以我想模拟第二个类。一些伪代码可能会有所帮助

export class Foo {
    startProcessing() {
        const bar = new Bar();
        const sub = bar.tickTock.subscribe(
             state => { 
                     // something went right
                    },
             error => {
                    // something went wrong
                    }
            );
     }
}
我尝试在测试文件中声明mock类,并通过
TestBed.configureTestingModule
providers
属性提供它,但它始终使用原始条。
我如何编写一个测试来提供一个模拟类来代替我可以控制的
Bar

解决此问题的一种方法是通过函数参数(依赖项注入)传入Bar类型的对象。这样,您就可以控制条形图对象

我已经准备好了,但我觉得很脏。因为调用
startProcessing
的地方只是构造
newbar()
并每次传递它。如果可能的话,我希望函数更加独立。另一种方法是将创建新Bar对象的语句包装到新函数中。这样,您将保留当前startProcessing方法签名,同时在代码中创建一个位置,您可以通过模拟该函数来控制Bar对象的创建。