我有一个控制器,它有一些在控制器加载时运行的逻辑。
此逻辑检查服务中的值并根据值执行操作。
if(FunkyService.foo()) {
doA();
} else {
doB();
}
我想编写一个Jasmine测试,可以测试服务可以拥有的每个值的结果(在本例中,我的服务的函数foo()中为true或false)。
我的问题是控制器是在beforeEach()函数中加载的,这意味着在我的测试中切换服务值为时已晚。如果我在beforeEach()中设置我的服务foo()函数的结果,我就无法理解如何测试真假结果。
我有两个问题。
如何让我的控制器在我的某个测试中重新加载?这将允许我更改服务foo()函数返回值,然后强制控制器在加载时重新运行逻辑。
或者我应该以完全不同的方式接近这个?
答案 0 :(得分:2)
通过所有单元测试,我已经完成了任何激活或控制器级别的更改,我在单独的描述中进行了说明,在此示例中我假设doA和doB将变量设置为true / false(传入的内容)服务)。
describe("Setting up globals", function() {
var foo;
beforeEach(function() {
foo = false;
});
it("is just a function, so it can contain any code", function() {
expect(foo).toBe(false);
});
it("can have more than one expectation", function() {
expect(true).toEqual(true);
});
describe("testing service for true", function() {
var sut;
beforeEach(function() {
sut = new FunkyService(true);
});
it("can reference both scopes as needed", function() {
expect(foo).toEqual(true);
});
});
describe("testing service for false default action", function() {
var sut;
beforeEach(function() {
sut = new FunkyService(false);
});
it("can reference both scopes as needed", function() {
expect(foo).toEqual(false);
});
});
});