Javascript JsMockito验证机制不';行不通

Javascript JsMockito验证机制不';行不通,javascript,unit-testing,mocking,Javascript,Unit Testing,Mocking,JsMockito的验证机制对我不起作用。我的设置是我有两个班,普通班和建议班 MyNS.Common = function() {}; MyNS.Suggestions = function() {}; 我提出了一个共同的建议 MyNS.Suggestions.prototype.setCommon = function(common) {this.common = common;}; 然后,我使用Common.getAdGroupId()的返回值并使用该值调用Suggestions.re

JsMockito的验证机制对我不起作用。我的设置是我有两个班,普通班和建议班

MyNS.Common = function() {};
MyNS.Suggestions = function() {};
我提出了一个共同的建议

MyNS.Suggestions.prototype.setCommon = function(common) {this.common = common;};
然后,我使用Common.getAdGroupId()的返回值并使用该值调用Suggestions.refresh()。这就是我想测试的全部内容

MyNS.Suggestions.prototype.init = function() {
    // This is mocked to return 56 as can be seen in the test above.
    var adGroupId = this.common.getAdGroupId();
    this.refresh(adGroupId);
};

完整的工作示例在小提琴上:。请告知。

您这里有几个错误

  • 您已经在测试中模拟了您的系统。您正在测试MyNS。建议,对吗?因为它是一个模拟,“init()”方法是一个空存根。您需要使用MyNS.Suggestions对象的真实实例
  • 您正在调用“mockedSuggestions.setCommon(mockedCommon)”。因为“setCommon”是一个模拟方法,所以它不会做任何事情。如果要引用模拟对象上的值,需要执行类似于创建getter方法(“getCommon”)的操作,然后执行“when(mockedSuggestions).getCommon().thenReturn(mockedCommon);”。当然,这是不相关的,因为建议对象首先不应该是模拟对象
  • 希望这有帮助