Вы также можете использовать плагин chai, чтобы шпионить за пользовательскими функциями в вашем файле jsx.
// to use this pluggin add this to the top of your testing file
const chai = require("chai"), spies = require("chai-spies");
chai.use(spies);
import Foo from ".//Foo.jsx";
describe("Foo", () => {
it("a call to customFunction will not error", () => {
let spy = chai.spy(Foo.prototype, "customFunciton"); // spy
const wrapper = mount( );
wrapper.setProps({bar: "baz"}); // manipulate you component in some way
expect(spy).to.have.been.called.once();
});
});
@ leland-richardson прав, это зависит от того, что делает ваш тест. Понимание этого поможет вам найти новые способы манипулирования вашим компонентом и, следовательно, сделать утверждения.
Еще один пример тестирования функции, которая обновляет состояние ваших компонентов.
it("function will assert new state", () => {
const wrapper = shallow( );
wrapper.instance.customFunction(); // call custom function
wrapper.update();
expect(wrapper.state("bar")).to.equal("new-state");
});
У Chai-spies также есть несколько цепных геттеров, которые значительно облегчают тестирование пользовательских функций. Пожалуйста, смотрите документы для более подробного объяснения.
Используйте метод расширения SelectMany
list = listOfList.SelectMany(x => x).ToList();
Вы имеете в виду это?
var listOfList = new List<List<int>>() {
new List<int>() { 1, 2 },
new List<int>() { 3, 4 },
new List<int>() { 5, 6 }
};
var list = new List<int> { 9, 9, 9 };
var result = list.Concat(listOfList.SelectMany(x => x));
foreach (var x in result) Console.WriteLine(x);
Результатов: 9 9 9 1 2 3 4 5 6
Вот версия интегрированного синтаксиса C #:
var items =
from list in listOfList
from item in list
select item;