【发布时间】:2021-12-30 19:39:18
【问题描述】:
我正在尝试对一项服务进行单元测试,该服务根据我创建的 API 的响应创建 cookie。
export interface ISessionService {
createSession(): Observable<ApplicationSession>;
validateSession(): Observable<boolean>;
}
响应看起来像这样:
export abstract class ApplicationSession {
public readonly reference: string;
public readonly dateCreated: Date;
public readonly expiryDate: Date;
}
当SessionService.createSession() 被调用时,它会执行一个rxjs 点击并通过另一个服务创建一个cookie,我正在尝试测试是否使用正确的参数调用了cookieService。像这样:
describe('given a successful request to create a session', () => {
beforeEach(() => {
jestSpyOn(cookiesService, 'setCookie').mockClear();
jestSpyOn(sessionApi, 'createSession').mockReturnValue(of({
data: {
sessionReference: 'some-reference',
dateCreated: '1996-10-15T04:35:32.000Z',
expiryDate: '1996-10-15T15:35:32.000Z',
statusCode: 200
},
exception: null,
hasError: false
}));
});
it('Then a session cookie is set from the API response', (done) => {
subject.createSession().subscribe();
expect(cookiesService.setCookie).toHaveBeenCalledWith(ApplicationCookies.SESSION_COOKIE, {
dateCreated:'1996-10-15T04:35:32.000Z',
expiryDate: '1996-10-15T15:35:32.000Z',
reference: 'some-reference'
}, { expires: '1996-10-15T15:35:32.000Z', path: "/", sameSite: "strict", secure: true });
done();
});
});
不过,我似乎总是遇到同样的错误:
Error: expect(jest.fn()).toHaveBeenCalledWith(...expected)
- Expected
+ Received
"mock-sessionCookie",
Object {
- "dateCreated": "1996-10-15T04:35:32.000Z",
- "expiryDate": "1996-10-15T15:35:32.000Z",
+ "dateCreated": 1996-10-15T04:35:32.000Z,
+ "expiryDate": 1996-10-15T15:35:32.000Z,
"reference": "some-reference",
},
Object {
- "expires": "1996-10-15T15:35:32.000Z",
+ "expires": 1996-10-15T15:35:32.000Z,
"path": "/",
"sameSite": "strict",
"secure": true,
},
Number of calls: 1
我尝试过使用date.parse(''),但这不起作用......做出这个断言的正确方法是什么?我想不通。我不能像测试显示的那样只输入日期,因为它不是数字。
谢谢
【问题讨论】:
标签: typescript unit-testing date jestjs