此检查过去通过:
expect(array).toContain(value)
Run Code Online (Sandbox Code Playgroud)
阵:
[
{"_t":"user","id":1073970419,"email":"email3@example.org","name":"Spectator"},
{"_t":"user","id":4464992042,"email":"email4@example.org","name":"Collaborator"},
{"_t":"user","id":1978569710,"email":"email5@example.org","name":"Manage"}
]
Run Code Online (Sandbox Code Playgroud)
值:
{"_t":"user","id":1978569710,"email":"email5@example.org","name":"Manage"}
Run Code Online (Sandbox Code Playgroud)
但不再过去了.什么是编写相同测试的新方法?
T.J*_*der 16
它不会包含该对象(请记住,为了相同的目的,具有相同属性的两个对象不是同一个对象),因此toContain永远不会通过.
您需要使用另一个测试,例如toEqual或(如果您只想检查属性的子集),toEqual结合使用jasmine.objectContaining.
以下toEqual是该页面上Jasmine文档的示例:
describe("The 'toEqual' matcher", function() {
it("works for simple literals and variables", function() {
var a = 12;
expect(a).toEqual(12);
});
it("should work for objects", function() {
var foo = {
a: 12,
b: 34
};
var bar = {
a: 12,
b: 34
};
expect(foo).toEqual(bar);
});
});
Run Code Online (Sandbox Code Playgroud)
注意现在foo等于bar.
以下是他们使用的示例jasmine.objectContaining:
describe("jasmine.objectContaining", function() {
var foo;
beforeEach(function() {
foo = {
a: 1,
b: 2,
bar: "baz"
};
});
it("matches objects with the expect key/value pairs", function() {
expect(foo).toEqual(jasmine.objectContaining({
bar: "baz"
}));
expect(foo).not.toEqual(jasmine.objectContaining({
c: 37
}));
});
// ...
});
Run Code Online (Sandbox Code Playgroud)
请注意具有多个属性的对象如何与提供的部分对象匹配jasmine.objectContaining.
BBl*_*kwo 15
您需要的语法是:
const obj = {"_t":"user","id":1978569710,"email":"email5@example.org","name":"Manage"};
expect(array).toContain(jasmine.objectContaining(obj));
Run Code Online (Sandbox Code Playgroud)
请参阅小提琴:https://jsfiddle.net/bblackwo/4o5u5Lmo/16/
@TJCrowder 已经准确地解释了这个问题。只是为了帮助您更多一点,如果您想调整您的示例,您需要这样的东西:
var userA = {"_t":"user","id":1978569710,"email":"email5@example.org","name":"Manage"}
array =
[
{"_t":"user","id":1073970419,"email":"email3@example.org","name":"Spectator"},
{"_t":"user","id":4464992042,"email":"email4@example.org","name":"Collaborator"},
userA
]
expect(array).toContain(userA);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19415 次 |
| 最近记录: |