我希望有人可以帮我解决一个小问题。我试图在函数内部存在一个未定义的属性并返回一个已知值,我试着用一个简单的测试用例:
var self = this;
self.test = function() {
return person.myId();
};
if (typeof module !== "undefined" && module.hasOwnProperty("exports")) {
module.exports = self;
}
return self;
我试图做的是:
it('Basic stub test', function() {
sinon.stub(code, 'person.myId').return("1234");
assert(code.test(), "1234");
});
我曾希望上面会对对person.myId()的任何调用进行存根,但是,我只是得到任何错误说:不能存根不存在的自有属性person.myId。
我们使用自己的软件处理依赖注入(例如,在我们的软件人员运行期间可用)但我们正在尝试在软件之外编写隔离的单元测试,因此必须删除缺少的依赖项。
以前有人尝试过这种事吗?我想做一些不可能的事吗?
感谢您提供任何帮助/支持。
山姆
答案 0 :(得分:-1)
我不确定依赖注入软件的作用是什么,所以这是一个中间答案。
它不太理想,因为如果您正在更改要测试的代码,它往往会成为代码气味,尽管它符合您的具体问题。
我还假设您正在使用提供mocha
& before
的{{1}}之类的内容。 afterEach
函数。
var sandbox = sinon.createSandbox();
before(function () {
var person = {
myId: () => console.log('myId no op'),
};
code.person = person;
}
it('Basic stub test', function() {
sandbox.stub(code.person, 'myId').returns('1234');
assert(code.test(), '1234');
});
afterEach(function () {
sandbox.restore();
});
文档链接:http://sinonjs.org/releases/v4.1.3/sandbox/
(虽然这里严格要求使用sandbox
)