我使用Moq进行单元测试。我想嘲笑Guid
。我找到了this post about mocking Guid.NewGuid()
,但我不知道它是否适合我,因为我不知道(并且无法找到)mockGuidService
类型。
答案 0 :(得分:1)
mockGuidService
的类型为Mock<IGuidService>
。只有在为GUID提供服务使用接口并且能够注入模拟时,它才会起作用。
如果你的架构太紧密而没有这样做(没有接口,没有DI)那么我会建议改进它,但如果你不能改变它,那么还有另一种选择。您可以提取生成GUID作为方法,将其标记为虚拟并创建整个对象的模拟,您可以在其中更改方法的行为。
答案 1 :(得分:0)
您可以使用接口实现包装类,如下所示。
array = np.array([-0.5, -2, -1, -0.5, -0.25, 0, 0, -2, -1, 0.25, 0.5, 1, 2])
p = []
def function(array, p):
for i in np.nditer(array):
if i < -1:
while i <= -0.3:
p.append(1)
i += 1
else:
p.append(0)
i += 1
return p
a = function(array, p)
print(a)
您必须添加依赖注入才能将其添加到您的课程中。在您正在测试的类中,添加包装器的实例并将其分配给构造函数。
public interface IGuidService { Guid NewGuid(); }
class GuidService : IGuidService
{
public Guid NewGuid() { return Guid.NewGuid(); }
}
然后在你的测试中,你会这样做:
class MyClass {
private IGuidService myGuidService;
public MyClass() { myGuidService = new GuidService(); }
public MyClass(IGuidService gw) { myGuidService = gw; }
public void DoSomethingThatRequiresAGuid() {
myGuidService.NewGuid();
}
}